Ver Mensaje Individual
  #3 (permalink)  
Antiguo 14/10/2011, 12:22
fgrudolph
 
Fecha de Ingreso: octubre-2011
Mensajes: 4
Antigüedad: 12 años, 6 meses
Puntos: 2
Respuesta: como puedo crear un sitemap con php

Este es un ejemplo de SiteMap que uso para mis sitios. Espero sirva:

Código PHP:
Ver original
  1. <?php
  2.  
  3. function toUrl($href, $changefreq, $priority)
  4. {
  5.    echo
  6.       "<url>\n" .
  7.       "   <loc>$href</loc>\n".
  8.       "   <changefreq>$changefreq</changefreq>\n" .
  9.       "   <priority>$priority</priority>\n".
  10.       "</url>\n";
  11. }
  12.  
  13. function getSiteMapItems()
  14. {
  15.  
  16.    // La URL de nuestro sitio que servirá como base para las páginas que queremos indexar
  17.    
  18.    $site = "http://www.midominio.com/";
  19.  
  20.    // Este array contiene los valores admitidos para CHANGE_FREQ y codificaciones posibles para cada caso
  21.    // Se puede optar por asignar números o guardar los valores sin codificar (de la forma en que aquí está
  22.    // planteado, este campo se podrá indicar como VARCHAR(1), con lo cual se ahorra espacio en la base de
  23.    // datos.
  24.    
  25.    $changefreqs = array
  26.    (
  27.       "a" => "always",
  28.       "h" => "hourly",
  29.       "d" => "daily",
  30.       "w" => "weekly",
  31.       "m" => "monthly",
  32.       "y" => "yearly",
  33.       "n" => "never"
  34.    );
  35.  
  36.    // tabla_a_procesar será la tabla de la base de datos con el contenido de las páginas que queremos
  37.    // que aparezcan en el SiteMap. Esta tabla podra contener los siguientes campos:
  38.    //
  39.    // change_freq VARCHAR(1) --> en este caso, se guardarán los códigos del array anterior
  40.    // url VARCHAR(255)       --> la longitud variará según nuestras necesidades
  41.    // priority SMALLINT      --> será un valor entre 0 y 1
  42.  
  43.    // Conectamos apropiadamente con la base de datos
  44.    
  45.    $conn     = mysql_connect("host", "usuario", "password");
  46.    $dbhandle = mysql_select_db("database_name", $conn);
  47.  
  48.    // Consultamos nuestra tabla
  49.    
  50.    $sql = "SELECT * FROM tabla_a_procesar";
  51.    $sql = mysql_query($sql);
  52.  
  53.    while ($row = mysql_fetch_array($sql))
  54.    {
  55.       $changefreq  = $changefreqs[$row["change_freq"]];
  56.       $priority    = $row["priority"];
  57.       $url         = $row["url"];
  58.      
  59.       // ¡ATENCIÓN CON LA $url! Debemos tener en cuenta que la codificación de nuestro SiteMap debe ser UTF-8
  60.       // Cualquier cosa que tengamos problemas para visualizarlo, recomiendo leer el protoclo de SITEMAPS en
  61.       // http://www.sitemaps.org/es/protocol.php
  62.      
  63.       // Aquí se pude ir haciendo una consulta anidada si existen subcarpetas o parámetros que dependen de una URL
  64.       // determinada, por ejemplo, el caso (ya sea con parámetros u otra forma de presentar la URL):
  65.       //
  66.       // http://www.midominio.com/pagina.php
  67.       // http://www.midominio.com/pagina.php?parametro=1
  68.       // http://www.midominio.com/pagina.php?parametro=2
  69.       //
  70.       // http://www.midominio.com/pagina
  71.       // http://www.midominio.com/pagina/parametro1
  72.       // http://www.midominio.com/pagina/parametro2
  73.       //
  74.       // http://www.midominio.com/pagina
  75.       // http://www.midominio.com/pagina-parametro1
  76.       // http://www.midominio.com/pagina-parametro2
  77.       //
  78.       // etc.
  79.  
  80.       toUrl($site . $url, $changefreq, $priority);
  81.      
  82.    }
  83. }
  84.  
  85. function getSiteMap()
  86. {
  87.    header("Content-Type: text/xml; charset=UTF-8");
  88.    echo
  89.       "<?xml version='1.0' encoding='UTF-8'?>\n" .
  90.       "<!-- Archivo Autogenerado -->\n" .
  91.       "<urlset\n" .
  92.       "   xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'\n" .
  93.       "   xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'\n" .
  94.       "   xsi:schemaLocation='http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd'\n" .
  95.       ">\n";
  96.    getSiteMapItems();
  97.    echo "</urlset>\n";
  98. }
  99.  
  100. getSiteMap();
  101.  
  102. ?>