Este es un ejemplo de SiteMap que uso para mis sitios. Espero sirva:
Código PHP:
Ver original<?php
function toUrl($href, $changefreq, $priority)
{
echo
"<url>\n" .
" <loc>$href</loc>\n".
" <changefreq>$changefreq</changefreq>\n" .
" <priority>$priority</priority>\n".
"</url>\n";
}
function getSiteMapItems()
{
// La URL de nuestro sitio que servirá como base para las páginas que queremos indexar
$site = "http://www.midominio.com/";
// Este array contiene los valores admitidos para CHANGE_FREQ y codificaciones posibles para cada caso
// Se puede optar por asignar números o guardar los valores sin codificar (de la forma en que aquí está
// planteado, este campo se podrá indicar como VARCHAR(1), con lo cual se ahorra espacio en la base de
// datos.
(
"a" => "always",
"h" => "hourly",
"d" => "daily",
"w" => "weekly",
"m" => "monthly",
"y" => "yearly",
"n" => "never"
);
// tabla_a_procesar será la tabla de la base de datos con el contenido de las páginas que queremos
// que aparezcan en el SiteMap. Esta tabla podra contener los siguientes campos:
//
// change_freq VARCHAR(1) --> en este caso, se guardarán los códigos del array anterior
// url VARCHAR(255) --> la longitud variará según nuestras necesidades
// priority SMALLINT --> será un valor entre 0 y 1
// Conectamos apropiadamente con la base de datos
// Consultamos nuestra tabla
$sql = "SELECT * FROM tabla_a_procesar";
{
$changefreq = $changefreqs[$row["change_freq"]];
$priority = $row["priority"];
$url = $row["url"];
// ¡ATENCIÓN CON LA $url! Debemos tener en cuenta que la codificación de nuestro SiteMap debe ser UTF-8
// Cualquier cosa que tengamos problemas para visualizarlo, recomiendo leer el protoclo de SITEMAPS en
// http://www.sitemaps.org/es/protocol.php
// Aquí se pude ir haciendo una consulta anidada si existen subcarpetas o parámetros que dependen de una URL
// determinada, por ejemplo, el caso (ya sea con parámetros u otra forma de presentar la URL):
//
// http://www.midominio.com/pagina.php
// http://www.midominio.com/pagina.php?parametro=1
// http://www.midominio.com/pagina.php?parametro=2
//
// http://www.midominio.com/pagina
// http://www.midominio.com/pagina/parametro1
// http://www.midominio.com/pagina/parametro2
//
// http://www.midominio.com/pagina
// http://www.midominio.com/pagina-parametro1
// http://www.midominio.com/pagina-parametro2
//
// etc.
toUrl($site . $url, $changefreq, $priority);
}
}
function getSiteMap()
{
header("Content-Type: text/xml; charset=UTF-8"); echo
"<?xml version='1.0' encoding='UTF-8'?>\n" .
"<!-- Archivo Autogenerado -->\n" .
"<urlset\n" .
" xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'\n" .
" xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n" .
" xsi:schemaLocation='http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'\n" .
">\n";
getSiteMapItems();
echo "</urlset>\n";
}
getSiteMap();
?>