Hoy veremos cómo crear un archivo de mapa de sitio XML con PHP; también conocido como sitemap. Para ello vamos a usar una librería ligera llamada sitemap-php.
Google creó Google Sitemaps? (Mapas de sitio de Google en inglés) para que los desarrolladores web pueden publicar listas de enlaces de sus sitios.
Si utilizas composer ejecuta:
composer require evert/sitemap-php
Incluye el autoload y listo. En caso de que no uses composer, incluye el archivo llamado Sitemap.php que está aquí.
Sin importar la forma en la que incluyas, recuerda indicar que usarás el namespace así:
<span class="pl-k">use</span><span> </span><span class="pl-c1">SitemapPHP\Sitemap</span><span>;</span>
Eso es en la parte superior de tu código.
Primero se debe crear una nueva instancia de Sitemap; pasando la URL absoluta del sitio en el constructor.
En mi caso, para mi sitio, sería así:
$sitemap = new Sitemap("https://parzibyte.me");
Una vez que definimos la URL del sitio, podemos opcionalmente ponerle un nombre de archivo llamando al método setFilename
:
$sitemap->setFilename("nombre");
Lo pasamos sin extensión; y cosas como la extensión o sufijos no se pueden cambiar.
Para agregar un elemento llamamos al método addItem
. Los argumentos en orden son:
/
y si hubiera una de contacto sería /contacto
0
al 1.0
. A las páginas más importantes les ponemos 1.0
, y a las demás tal vez una menor; pero siempre respetando los límites.always
, hourly
, daily
, weekly
, monthly
, yearly
ynever
strtotime
) o la marca de tiempo de Unix como entero.Así que en mi caso agrego la de inicio así:
$sitemap->addItem("/", "1.0", "yearly", "Today");
Estoy agregando un sitio con la máxima prioridad; indicando que se podría actualizar cada año y que la fecha de generación es hoy; aunque en realidad en el XML se quedará la fecha real, no la cadena Today.
Así podemos agregar miles de enlaces, con prioridad distinta. Igualmente podemos llamar a addItem
dentro de un ciclo, usar una base de datos y todo eso que permita la programación.
Cuando hayamos terminado de agregar todos los elementos llamamos al método createSitemapIndex
, pasándole la URL relativa a la ubicación del archivo XML.
Normalmente debería ser la misma ruta pero con una barra al final; ya que los sitemap deberían estar en la raíz.
$sitemap->createSitemapIndex("https://parzibyte.me/", "Today");
Aquí pondré el código necesario para generar el mapa del sitio. Eso va a crear dos archivos: el índice del sitemap (sitemap-index) y los mapas (sitemap-1, sitemap-2, o sitemap si es únicamente uno).
El índice es creado para que se soporten múltiples mapas de sitio; eso en caso de que agreguemos millones de enlaces.
No te preocupes, si vas a enviar el mapa del sitio a los motores de búsqueda envía el índice, ya que ahí hay enlaces hacia los otros mapas de sitio.
<?php
/**
* Generar un sitemap con PHP y Sitemap.php
*
* @author parzibyte
*/# Incluye clase, o autoloader
include_once "Sitemap.php";
# Indica que vas a usar el namespace
use SitemapPHP\Sitemap;
# Crear sitemap
$sitemap = new Sitemap("https://parzibyte.me");
# Agrega todas las URL
$sitemap->addItem("/", "1.0", "yearly", "Today");
$sitemap->addItem("/blog", "0.9", "daily", "Today");
$sitemap->addItem("/apps/cotizaciones", "0.9", "daily", "Today");
# Genera el sitemap
$sitemap->createSitemapIndex("https://parzibyte.me/", "Today");
<?xml version="1.0" encoding="UTF-8"?>
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<sitemap>
<loc>https://parzibyte.me/sitemap.xml</loc>
<lastmod>2019-03-23</lastmod>
</sitemap>
</sitemapindex>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://parzibyte.me/</loc>
<priority>1.0</priority>
<changefreq>yearly</changefreq>
<lastmod>2019-03-23</lastmod>
</url>
<url>
<loc>https://parzibyte.me/blog</loc>
<priority>0.9</priority>
<changefreq>daily</changefreq>
<lastmod>2019-03-23</lastmod>
</url>
</urlset>
Recuerda que si escribes “Today
” el sitemap tendrá la fecha en la que fue generado, recomiendo refrescarlo cada cierto tiempo.
Con eso terminamos por hoy. Si quieres aprender más sobre PHP haz click aquí.
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…
Esta web usa cookies.