Cómo crear un archivo xml para nuestro "San Google" usando PHP y no morir en el intento.
Antes de poner manos a la obra vamos a hablar un poco de Google SiteMaps.
Google Sitemaps permite a los webmasters añadir en un XML las páginas que quieren que estén en el index de Google. La participación en el programa es gratuita, la inclusión no está garantizada, pero Google piensa que de este modo podrá llegar a indexar un mayor número de páginas que con el simple rastreo tradicional.
El XML también dejará que los webmasters indiquen cada cuanto se actualiza su página o cada cuanto tiempo quiere que sea revisitado.
Como funciona el nuevo programa?
Los webmasters crean un archivo XML con las URLs que quiere sean rastreadas, así como una pequeña anotación por URL indicando la última actualización y el ritmo de actualización de la página. Google alojará el Sitemap en sus servidores indicandote exactamente donde se encuentra.
Solo es necesatio utilizar una cuenta de Google y registrarte de manera gratuita.
Este script toma el directorio raíz de nuestro sitio web, lo lee y lista todos aquellos archivos cuya extensión sea .php, pero ustedes pueden cambiarlo para que liste lo que ustedes deseen, en base a sus necesidades, esto es sólo un ejemplo.
Pero basta de palabras y vamos a ver el codigo
<?php
if ($gestor = opendir('.')) { //Abrimos el directorio donde estamos parados, aca pueden darle el directorio que deseen
echo "<" . "?xml version=\"1.0\" encoding=\"UTF-8\"" . "?" . ">"; //etiqueta de inicio de un archivo XML, parseado para no tener problemas con las etiquetas
/* Datos para el sitemaps de Google, chequea esta parte en https://www.google.com/webmasters/sitemaps/docs/es/overview.html */
?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://www.tusitio.com/</loc>
<lastmod>2006-03-23</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<?
// empezamos a generar la iteracion
while (false !== ($archivo = readdir($gestor))) {
$p = explode(".",$archivo);
if(strtolower($p[count($p)-1]) == "php")
{
echo "
<url>
<loc>http://www.tusitio.com/$archivo</loc>
<lastmod>2006-03-23</lastmod>
<changefreq>yearly</changefreq>
</url>";
}
}
//cerramos
closedir($gestor);
echo "
</urlset>";
}
?>
Demasiado Fácil no? claro que si queremos darle datos desde la base de datos, cosas como contenido.php?id=1 se empieza a complicar un poco la cosa, pero ni tanto, de todas maneras, eso lo desarrollas tu en base, como ya dije, a tus necesidades.
Google Sitemaps permite a los webmasters añadir en un XML las páginas que quieren que estén en el index de Google. La participación en el programa es gratuita, la inclusión no está garantizada, pero Google piensa que de este modo podrá llegar a indexar un mayor número de páginas que con el simple rastreo tradicional.
El XML también dejará que los webmasters indiquen cada cuanto se actualiza su página o cada cuanto tiempo quiere que sea revisitado.
Como funciona el nuevo programa?
Los webmasters crean un archivo XML con las URLs que quiere sean rastreadas, así como una pequeña anotación por URL indicando la última actualización y el ritmo de actualización de la página. Google alojará el Sitemap en sus servidores indicandote exactamente donde se encuentra.
Solo es necesatio utilizar una cuenta de Google y registrarte de manera gratuita.
Este script toma el directorio raíz de nuestro sitio web, lo lee y lista todos aquellos archivos cuya extensión sea .php, pero ustedes pueden cambiarlo para que liste lo que ustedes deseen, en base a sus necesidades, esto es sólo un ejemplo.
Pero basta de palabras y vamos a ver el codigo
<?php
if ($gestor = opendir('.')) { //Abrimos el directorio donde estamos parados, aca pueden darle el directorio que deseen
echo "<" . "?xml version=\"1.0\" encoding=\"UTF-8\"" . "?" . ">"; //etiqueta de inicio de un archivo XML, parseado para no tener problemas con las etiquetas
/* Datos para el sitemaps de Google, chequea esta parte en https://www.google.com/webmasters/sitemaps/docs/es/overview.html */
?>
<urlset xmlns="http://www.google.com/schemas/sitemap/0.84">
<url>
<loc>http://www.tusitio.com/</loc>
<lastmod>2006-03-23</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<?
// empezamos a generar la iteracion
while (false !== ($archivo = readdir($gestor))) {
$p = explode(".",$archivo);
if(strtolower($p[count($p)-1]) == "php")
{
echo "
<url>
<loc>http://www.tusitio.com/$archivo</loc>
<lastmod>2006-03-23</lastmod>
<changefreq>yearly</changefreq>
</url>";
}
}
//cerramos
closedir($gestor);
echo "
</urlset>";
}
?>
Demasiado Fácil no? claro que si queremos darle datos desde la base de datos, cosas como contenido.php?id=1 se empieza a complicar un poco la cosa, pero ni tanto, de todas maneras, eso lo desarrollas tu en base, como ya dije, a tus necesidades.
Juan Edgardo Jorquera Uribe
Analista Programador