Dada la importancia del sitemap para que los motores de búsqueda nos indexen correctamente y como le queremos indicar esta clase nos puede ser muy útil.
<?php
class sitemap {
private var $list_url = array();
public function add_list( $list_urls ) {
for( $i = 0; $i < count( $list_urls ); $i++ ) {
$this->add( $list_urls[$i]['loc'], $list_urls[$i]['priority'], $list_urls[$i]['lastmod'], $list_urls[$i]['changefreq'] );
}
}
public function add( $url, $priority = 0.5, $lastmod = date( 'Y-m-d' ), $changefreq = 'monthly' ) {
$this->list_url[] = array( 'loc' => $url, 'priority' => $priority, 'lastmod' => $lastmod, 'changefreq' => $changefreq );
}
public function generate( $file_name = NULL ) {
$content = '<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">';
foreach( $this->list_url as $value ) {
$content .= '<url><loc>'.htmlspecialchars( utf8_encode( $value['loc'] ) ).'</loc>';
if( isset( $value['priority'] ) ) $content .= '<priority>'.$value['priority'].'</priority>';
if( isset( $value['lastmod'] ) ) $content .= '<lastmod>'.$value['lastmod'].'</lastmod>';
if( isset( $value['changefreq'] ) ) $content .= '<changefreq>'.$value['changefreq'].'</changefreq>';
$content .= '</url>';
}
$content .= '</urlset>';
if( isset( $file_name ) ) {
file_put_contents( $file_name, $content );
}
return( $content );
}
}
?>
Su uso es bastante sencillo, creamos un nuevo objeto denominado sitemap
$smap = new sitemap();
Para ir añadiendo páginas al sitemap:
$smap->add( 'http://www.dominio.com/' );
Si lo añadimos así nos genera el resto de los campos con un valor medio (priority=0.5, changefreq=monthly, lastmod=Fecha de hoy)
Para generar el sitemap:
echo( $smap->generate() );
Esto nos lo muestra. Si lo que queremos es guardarlo en un fichero tendríamos que añadir el nombre del fichero a la función.
Por último hay una función para añadir varias urls a la vez desde un array:
$urls = array(
array(
'loc' => 'http://www.dominio.com/',
'priority' => 0.5,
'changefreq' => 'monthly'
), array(
'loc' => 'http://www.dominio.com/index.php',
'priority' => 1,
'changefreq' => 'weekly'
) );
$smap = new sitemap();
$smap->add_list( $urls );
echo( $smap->generate() );
