Yo lo haría desde la base, pero vamos primero a lo que quieres, para eso puedes usar alguna herramienta externa, que justamente hace lo que buscas, explorar los links y armar el sitemap.
Sinceramente de esas no probé ninguna :P, pero en las FAQs y en otros foros recomiendan esta:
http://www.xml-sitemaps.com/
Si lo vas a hacer desde la base, y hiciste todo de la base, te vas a animar a hacerlo seguramente tu mismo, recuerda que es solo hacer echo de cada registro, no se tu estructura pero si tienes:
tabla
articulos
id
titulo
url
fecha
puedes hacer un
Código:
$sql = "SELECT * FROM articulos";
$rst = mysql_query($sql);
while ($row = mysql_fetch_array($rst)) {
echo $row['url'] . "\r\n";
}
con eso logras una lista de tus URLs, si no las tienes generadas y almacenadas en la tabla, usa ahí un llamado a la función que uses para generarlas.
Pero de esa lista, que seguro la haz hecho muchas veces si programaste tu sitio en PHP, a un sitemap, el camino es bien corto. Si te fijas en:
http://www.sitemaps.org/protocol.php el formato del sitemap, veras que lleva una cabecera y luego por cada url se repite el contenido de <url> ... </url> por tanto tu lista anterior la modificas y queda algo como:
Código:
$sql = "SELECT * FROM articulos";
$rst = mysql_query($sql);
while ($row = mysql_fetch_array($rst)) {
echo '<url>' . "\r\n";
echo '<loc>' . $row['url'] . '</loc>' . "\r\n";
echo '<lastmod>' . $row['fecha'] . '</lastmod>' . "\r\n";
echo '<changefreq>monthly</changefreq>' . "\r\n";
echo '<priority>0.8</priority>' . "\r\n";
echo '</url>' . "\r\n";
}
:)