Diffuser un flux RSS dynamique

Les fils de syndication RSS sont devenus essentiels pour les blogs, et tout autre type de site qui publie régulièrement du nouveau contenu. C’est un moyen très pratique pour diffuser votre contenu et permettre à vos visiteurs de suivre votre blog en s’abonnant à vos fils RSS.

En outre, cela permet aussi de s’inscrire dans des annuaires RSS, qui vous rapporteront de nombreux liens en profondeur (autres que votre page d’accueil), en plus de pouvoir accrocher les visiteurs de l’annuaire en leur présentant du contenu attrayant avant même qu’ils ne mettent le pied dans votre site Web!

La plupart des CMS (tels que Joomla, WordPress, Dotclear etc.) ont déjà un script intégré qui vous génère pour vous vos fils RSS. Par contre, si vous possédez un site Web dynamique fait « à la main », vous devrez vous débrouiller seul!

Assumons que vous possédez un site Web dynamique en PHP qui publie des articles de temps en temps. Nous allons créer un fonction PHP pour extraire ces articles de la base de données puis les inscrire dans un fichier XML, ce qui constituera votre fil RSS. Ainsi, votre fil RSS se mettra constamment automatiquement à jour.

Générer automatiquement le flux avec la réécriture d’URL

Pour y arriver, nous allons utiliser la réécriture d’URL car ça permet de faire le tout plus proprement, en simulant le fichier RSS sur demande, au lieu de constamment modifier dynamiquement un fichier RSS réel.

Créez un fichier .htaccess que vous placerez à la racine de votre site, ou bien modifiez celui que vous avez déjà, s’il y-a-lieu :


Options +FollowSymlinks
RewriteEngine on

# Le lien pour le fil RSS
RewriteRule ^rss\.xml$ /rss.php [L,NC]

Avec cette réécriture, le fichier rss.php va générer dynamiquement le contenu XML du flux RSS, il le simulera donc le fichier.

Créez un fichier qui se nommera rss.php. Nous extrayons dans l’exemple suivant les derniers articles d’un blogue (imaginaire).

Voici la structure de la table qui sert dans l’exemple :


CREATE TABLE IF NOT EXISTS `blog` (
`id` mediumint(9) NOT NULL COMMENT ‘ID de l »article’,
`texte` text NOT NULL COMMENT ‘Texte de l »article’,
`date` date NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT=’Articles du blogue’;

À insérer dans le fichier rss.php :

// Connexion MySQL
$host = « localhost »; // généralement localhost
$user = « NOM_D_UTILISATEUR »;
$pass = « MOT_DE_PASSE »;
$bdd = « NOM_DE_LA_BD »;

@mysql_connect($host,$user,$pass) or die(« La connexion a échoué: « .mysql_error());
@mysql_select_db(« $bdd ») or die(« La sélection de la base a échoué: « .mysql_error());

// Spécifier le type de contenu : XML
header(« Content-Type: text/xml »);

// Requête MySQL qui extrait les articles de la base de données
$requete = « SELECT id, date FROM blog ORDER BY date DESC LIMIT 10″; // les 10 derniers articles
$resultat = mysql_query($requete);

// Écriture du fichier XML
// l’entête :
$sm =  »;
$sm .= ‘xmlns:xsi= »http://www.w3.org/2001/XMLSchema-instance »
xsi:schemaLocation= »http://www.google.com/schemas/sitemap/0.84
http://www.google.com/schemas/sitemap/0.84/sitemap.xsd »>’;

// Articles du blog
while ($blog=mysql_fetch_array($resultat,MYSQL_ASSOC)) {
$xml = ‘‘;
$xml .= ‘‘;
$xml .= ‘TITRE DU FLUX RSS‘; // Le titre de votre flux RSS. Par exemple : Derniers articles du site xyz
$xml .= ‘HTTP://WWW.VOTRESITE.COM/‘; // URL de votre site
$xml .= ‘‘.$title.’‘; // Description de votre site

$xml .= ‘‘;
$xml .= ‘VOTRE_SITE/IMAGE.GIF‘; // Une image, logo
$xml .= ‘TITRE DE L’IMAGE‘; // Normalement la même chose que le titre plus haut
$xml .= ‘HTTP://WWW.VOTRESITE.COM/‘; // URL de votre site
$xml .= ‘DESCRIPTION‘; // Description de votre site (pour l’image)
$xml .= ‘‘;
}
$i = 0;

foreach($news as $a) {
if($i < 12) { $id = $a['date']; $datexml = explode('-', $a['date']); $date2=date("D, d M Y H:i:s", mktime(0,0,0, $datexml[1],$datexml[2],$datexml[0])); $lien = "http://www.votresite.com/articles.php?id=" . $id; // Le lien vers l'article spécifique (à modifier selon vos besoins) $xml .= '‘;
$xml .= ‘‘.$a[‘titre’].’‘; // Titre de l’article
$xml .= ‘‘.$lien.’‘; // Lien vers l’article
$xml .= ‘‘.$lien.’‘; // Permalink
$xml .= ‘‘.$date2.’ GMT‘;
$xml .= ‘‘.strip_tags($a[‘txt’]).’‘; // Texte de l’article, en enlevant les tags HTML qu’il peut contenir (il peut y avoir plus de raffinement ici)
$xml .= ‘
‘;

$i++;
}
}

// édition de la fin du fichier XML
$xml .= ‘‘;
$xml .= ‘‘;

echo $xml;

Ainsi, lorsque vous tenterez d’accéder http://www.votresite.com/rss.xml, le fichier rss.php sera appelé et un document XML simulé affiché, avec les 10 derniers articles bien frais sortis de votre blog.

Si vous préférez, il est aussi possible de réaliser une fonction à l’aide de ce code, et, au lieu de simuler le fichier avec la réécriture d’URL, écrire directement dans un fichier flux.xml. Inscrivez simplement à la fin de votre fonction quelque chose comme ça, pour écrire dans le fichier :

// écriture dans le fichier
$fp = fopen(« flux.xml », ‘w+’);
fputs($fp, $xml);
fclose($fp);

Ce message est également disponible en : Anglais

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *