Création d'un sitemap dynamique

Attention, depuis PHP 5.5.0, certaines extensions SQL sans doute utilisées dans ce tutoriel peuvent être obsolètes et seront supprimées dans le futur, vous devez donc adapter les codes! Exemples ici.

Histoire que notre ami "Google" trouve nos pages un peut plus rapidement et sans trop se fatiguer (pauvre robots ^^), nous allons créer un sitemap dynamique. Le but d'un sitemap est de permettre aux moteurs de recherches de parcourir plus facilement un site Web et donc théoriquement, d'indexer plus rapidement les pages de celui ci.

Cette réalisation va se dérouler en 3 étapes :

  1. Modifications de la page "ajouter-page.php" permettant la rédaction des articles.
  2. Ajout d'un champ dans la base de données.
  3. Création du fichier sitemap.

Modifications de la page "ajouter-page.php"

On ouvre donc la page "ajouter-page.php" et on cherche la ligne :

$categorie = $_POST["cat"];

Juste en dessous, on ajoute la date :

$date = date("Y-m-d");

On cherche la ligne :

'".mysql_real_escape_string($contenu)."'

On remplace par :

'".mysql_real_escape_string($contenu)."',
'".mysql_real_escape_string($date)."'

Quand je dis "on remplace", c'est juste pour que vous évitiez d'oublier la virgule sur la première ligne.
On enregistre et on envoie sur le serveur.

Ajout d'un champ dans la base de données

Vous vous rendez sur votre base de données et vous ajoutez à la fin de la table "CONTENU", un champ nommé "date" et de Type "date". Rien de plus ni de moins .

Création du fichier sitemap

Si vous ne savez pas à quoi sert un sitemap ni qu'elle est son utilité, je vous invite à lire le tutoriel suivant : Créer un sitemap XML.

Sous Notepad++, on ouvre un nouveau document que l'on va nommer "sitemap.php" et que l'on enregistrera dans le dossier "creer-un-site-dynamique".

Comme on va générer du contenu XML dans notre fichier PHP, on doit faire en sorte que le serveur indique au client de quel type de fichier il s'agit (Mime Type). Pour ce faire, on utilise une instruction qui modifie le message HTTP du serveur.

header("Content-type: application/xml");

Ensuite pour indiquer l'url exacte des pages du site dans le sitemap, on utilise une petite fonction qui récupère le nom de domaine :

function url_actuelle()
{
   return "http://" . $_SERVER["SERVER_NAME"];
}
$url = (url_actuelle());

Cette fonction couplée à une requête dans la base de données, nous permet d'obtenir l'url complète vers les pages :

'.$url.'/page.php?id='.$affiche['id'].'

Le code du sitemap XML dynamique au complet :

<?php
// On indique que c'est du xml
header("Content-type: application/xml");
//Début du fichier xml
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n
<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">\n\n"
;   //fonction pour récupérer le nom de domaine du site function url_actuelle() { return "http://" . $_SERVER["SERVER_NAME"]; } $url = (url_actuelle());   // on se connecte à la base de données include('connexion_bd.php');   mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); mysql_select_db("$nom_de_la_base") or die('Impossible de s&eacute;lectionner une base de donn&eacute;e. Assurez vous d\'avoir correctement remplit les donn&eacute;es du fichier connexion_bd.php.');   //On selectionne les données $result = mysql_query("SELECT id, date FROM CONTENU ORDER BY id ASC");   while($affiche = mysql_fetch_array($result)) { echo '<url>
<loc>'
.$url.'/page.php?id='.$affiche['id'].'</loc>
<lastmod>'
.$affiche['date'].'</lastmod>
<changefreq>monthly</changefreq>
<priority>0.5</priority>
</url>'
; } // Fermeture de la connexion à la base de données mysql_close(); //Fin du fichier xml echo '</urlset>'; ?>

Chaque nouvelle page que vous allez créer via l'interface admin. va enregistrer automatiquement la date du jour dans la base de données qui sera ensuite utilisée dans le sitemap. Chaque nouvelle page créée sera donc listé automatiquement dans le fichier sitemap.php sans aucune autre intervention de votre part!
Voila, comme dirait une certaine voix : "C'est tout pour le moment!" .

Voir/déposer un commentaire (0) | Signaler un problème