Comment créer un flux rss dynamique pour votre site?

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.
Nombreux sont les webmasters débutant désireux de proposer un flux rss sur leurs sites et tout aussi nombreux sont ils à ne pas savoir comment faire... Nous allons donc voir dans ce petit tutoriel comment créer un flux rss dynamique pour votre site. Bon, il va de soit que quelques modifications seront sans doute à apporter par vos soins pour adapter ce code à votre site mais elles devront être je pense minimes. Dans ce tutoriel, nous partons du principe que vous disposez d'une base de données dont au moins une table regroupe entre autre les champs correspondant à l'identifiant de chaque entrée (id), titre et description. Ces données sont normalement celles utilisées dans les métas-tags de votre site.

Ce que vous devez savoir :
  • Comment se nomme la base de données?
  • Quelles sont les identifiants de connexions?
  • Comment se nomme la table avec les entrées?
  • Comment se nomme les champs (id, titre, description) qui correspondent à la table?
  • Comment se nomme la page affichant vos articles (ex: page.php, news.php, article.php, etc..)?
Si votre site utilise l'url rewriting (ré écriture d'url) :
  • Quelle forme d'url rewriting est utilisé (code)?
  • Sous quelle forme sont ré écrites les url?

Dans le code qui suit, vous devez remplacer les "***" .

Comme vous le savez sans doute, un flux rss correspond au format XML et nous nous allons créer un flux rss en utilisant du PHP. Il faut donc dans un premier temps indiquer au serveur que notre page PHP est en réalité du XML.
header("Content-type: application/xml");
Un peut plus loin dans le code, on utilise une fonction (function OptimiseUrl($chaine)) utilisant la ré écriture d'url. Cette fonction est à modifier en fonction de votre propre système d'url rewriting.
Un peut plus bas dans le code, les url utilisant la fonction (function OptimiseUrl($chaine)) est utilisé pour ré écrire les url. Vous devez donc adapter la formes de celle-ci en fonction de votre propre système d'url rewriting.

Actuellement, la dite ligne est écrite de cette façon :
echo '<link>'.$url.'/'.OptimiseUrl($affiche["$titre"]).'-'.$affiche["$identifiant"].'.
php</link>'
;
$url correspond au nom de domaine de votre site (http://mon-site.com).
$affiche["$titre"] correspond au titre de l'article.
$affiche["$identifiant"] correspond à l'identifiant de l'article (généralement id).
.php correspond à l'extension de vos pages.

Supposons maintenant que l'un des titres soit :"Comment créer un flux rss pour mon site" et que le numéro d'identifiant soit le "54". La fonction OptimiseUrl() appliqué au titre de l'article va donc nous sortir : "comment-creer-un-flux-rss-pour-mon-site".
Mit bout à bout, l'url rewrité nous donne dans ce cas précis : "http://mon-site.com/comment-creer-un-flux-rss-pour-mon-site-54.php". D'ou la nécessité d'adapter cette partie ...

Le code :
<?php
// On modifie l'entête du document pour dire que c'est du xml
header("Content-type: application/xml");  
 
//Données à complèter pour la connexion à la base de données
$nom_du_serveur ="***";
$nom_de_la_base ="***";
$nom_utilisateur ="***";
$passe ="***";
 
//Nombre de flus rss à afficher
$nombre_flux=10;
//Nombre de caractères à afficher pour les descriptions avant d'être tronquées par des ...
$max_caracteres=150;
//A remplir si vous n'utilisez pas l'url rewriting
//Nom de la page affichant vos articles (ex: page.php, news.php, article.php, etc..)
$nom_de_la_page="***";
//Utilisez vous l'url rewriting?» 1=oui|0=non
$rewrite=0;
//Nom de la table à explorer
$nom_de_la_table="***";
//Identifiant - Généralement le champ id
$identifiant="***";
//Nom du champ affichant le titre
$titre="***";
//Nom du champ affichant la description
$description="***"; 
 
//Fonction pour récupérer l'url principale du site
function url_actuelle()
{
return "http://" . $_SERVER["SERVER_NAME"];
}
$url = (url_actuelle());
 
//Fonction pour re écrire les url. A modifier ou à adapter selon vos besoins
function OptimiseUrl($chaine)
{    
$chaine=strtolower($chaine);
 
$accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/","/å/",
 "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
$sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i",
 "u", "o", "o", "o", "o");
 
$chaine = preg_replace($accents, $sans,$chaine);  
$chaine = preg_replace('#[^A-Za-z0-9]#','-',$chaine);
 
// Remplace les tirets multiples par un tiret unique
$chaine = ereg_replace( "\-+", '-', $chaine );
// Supprime le dernier caractère si c'est un tiret
$chaine = rtrim( $chaine, '-' );
 
while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine);
 
return $chaine; 
}
 
//Entête du flux rss. A complèter selon vos besoins
echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n
<rss version=\"2.0\">\n
<channel>\n
<title>Titre du site ou du flux rss</title>\n
<link>$url</link>\n
<description>Description du site ou du flux rss</description>\n
<language>fr</language>\n\n"
;   //Connexion à la base de données mysql_connect("$nom_du_serveur","$nom_utilisateur","$passe"); //Vérification d'accès à la base de données mysql_select_db("$nom_de_la_base") or die("Impossible d'ouvrir la base de données ");   //On sélectionne les données $result = mysql_query("SELECT $identifiant, $titre, $description FROM $nom_de_la_table
ORDER BY id DESC LIMIT $nombre_flux"
);   while($affiche = mysql_fetch_array($result)) { //On affiche les flux echo '<item>
<title>'
.$affiche["$titre"].'</title>'; //Affichage du titre sans url rewriting if($rewrite==0){ echo '<link>'.$url.'/'.$nom_de_la_page.'?id='.$affiche["$identifiant"].'</link>';} //Affichage du titre avec url rewriting- Partie à modifier/complèter selon votre propre
ré écriture d'url
else { echo '<link>'.$url.'/'.OptimiseUrl($affiche["$titre"]).'-'.$affiche["$identifiant"].'
.php</link>'
; } //On tronque la description if (strlen($affiche["$description"])>$max_caracteres) { //Séléction du maximum de caractères $tronque_description = substr($affiche["$description"], 0, $max_caracteres); //Récupération de la position du dernier espace (afin déviter de tronquer un mot) $position_espace = strrpos($tronque_description, " "); $tronque_description = substr($tronque_description, 0, $position_espace); // Ajout des "..." $tronque_description = $tronque_description."..."; } echo '<description>'.$tronque_description.'</description>
</item>'
; }   // Fermeture de la connexion à la base de données mysql_close(); //On ferme le flux rss echo "</channel>\n</rss>"; ?>


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