Languages

Indexant una web amb el protocol Sitemap

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

Comments

petit error en la creació del XML

Ei! he trobat el vostre blog i el trobo interessant... miraré de seguir-lo, malgrat veig q no teniu cap feed.

Sobre el post, a l'acció falta afefir:

$response = $this->getResponse();
$response->setContentType('text/xml'); //per indicar q enviem un XML

i en la 3a linia de l'acció, hi ha un interrogant de més al final de la linia.

Fins la propera,

Joan

Modificat

Gràcies Joan, ja ho hem actualitzat.
També hem afegit el link al feed RSS al peu de pàgina.
Marc

Gracies a vosaltres!!!

Doncs això... gràcies pel feed... us seguiré!!!

joan