Google ha desenvolupat una sèrie d'eines per a webmasters que es poden trobar a Google Webmaster Central, una de les quals és el Protocol Sitemaps, per tal que els desenvolupadors puguin publicar la llista de links de la seva web, ja que moltes tenen pàgines dinàmiques que tan sols són accessibles des de formularis, i així es poden donar a conèixer als principals cercadors que ho soporten com Google, MSN i Yahoo!.
El fitxer que s'ha de generar, està en format XML i conté una llista de les URL i algunes característiques com la freqüència d'actualització o una ponderació dins el global de la web. Un cop es té aquest fitxer, es pot donar d'alta als cercadors.
Per generar aquest fitxer de forma dinàmica, en symfony podem crear un nou mòdul que anomenem "sitemap", i que nomès té una acció "index" que genera el fitxer XML:
actions.class.php:
public function executeIndex()
{
$xml = array();
$xml[] = '<?xml version="1.0" encoding="UTF-8"?>';
$xml[] = '<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">';
$url = array(
'http://www.exemple.com/contacte',
'http://www.exemple.com/ajuda');
foreach($url as $item){
$xml[] = ' <url>';
$xml[] = ' <loc>'. $item . '</loc>';
$xml[] = ' <priority>0.5000</priority>';
$xml[] = ' <changefreq>monthly</changefreq>';
$xml[] = ' </url>';
}
foreach(ItemPeer::doSelect(new Criteria()) as $item){
$xml[] = ' <url>';
$xml[] = ' <loc>http://www.exemple.com/item/'. $item->getStrippedTitle() . '</loc>';
$xml[] = ' <priority>0.8000</priority>';
$xml[] = ' <changefreq>weekly</changefreq>';
$xml[] = ' </url>';
}
$xml[] = '</urlset>';
$this->map = implode("\n", $xml);
$response = $this->getResponse()->setContentType('text/xml');
}
indexSuccess.php
<?php decorate_with(false) ?>
<?php echo $map ?>
I als cercadors només cal indicar-los que l'adreça del Sitemap és http://www.exemple.com/sitemap