Créer son flux RSS simplement avec Zend_FeedMettre en place un flux RSS très simplement pour son site web. |
samedi 06 août 2011 à 18:53
|
Le flux RSS est surement le meilleur moyen de diffuser ses nouveautés, c'est donc un outil indispensable pour la plupart des sites.
Bien que d'apparence très simple (ce n'est qu'un générateur de XML), le développement d'un flux RSS peut vous réserver quelques surprises (problèmes d'encodage, incompatibilité avec certains navigateurs etc...).
Ce tutoriel a pour but de générer un fichier RSS grâce au composant du Zend Framework : Zend_Feed.
Au vu de ses faibles dépendances, Zend_Feed est normalement utilisable dans n'importe quel projet, y compris un projet n'utilisant pas le Zend Framework.
Les accès à la base de données seront effectués grâce à l'ORM Doctrine, néanmoins rien n'empêche l'utilisation d'un bon vieu mysql_query.
Générer le fichier rss.xml
/application/scripts/GenererRss.php
$entries = array();
/*
Equivalent de $result = mysql_query(SELECT
*
FROM
article a
ORDER BY
a.id DESC
LIMIT 0,20)
*/
$articles = Doctrine::getTable('article')
->createQuery('a')
->orderby('a.id DESC')
->limit(20)
->execute();
/*
** Pour chaque article on crée un tableau qui symbolise une entrée.
** Cette entrée est ensuite ajoutée aux autres entrées.
** Cette boucle est égale à while($tab = mysql_fetch_array($result))
*/
foreach ($articles AS $article) {
$entry = array(
'title' => $article->titre,
'link' => $article->url,
'description' => $article->description,
'lastUpdate' => $article->ecrit_le
);
array_push($entries, $entry);
}
/*
** On créé ensuite un tableau symbolisant le flux RSS.
** Les entrées sont insérés dans le flux RSS.
*/
$rss = array(
'title' => $config->site->nom,
'link' => $config->site->url,
'description' => $config->site->description,,
'charset' => $config->resources->view->encoding,
'language' => 'fr',
'entries' => $entries
);
/*
** Le tableau est ensuite importé dans Zend_Feed,
** on lui précise que c'est du RSS que l'on veut
** (Zend_Feed gère aussi Atom & co).
*/
$feed = Zend_Feed::importArray($rss, 'rss');
/* Le XML est ensuite stocké dans une variable puis écrit dans un fichier. */
$rssFeed = $feed->saveXML();
$fh = fopen("/public/rss.xml", "w");
fwrite($fh, $rssFeed);
fclose($fh);
Intégration dans le Zend Framework
Comme dit précédemment, le Zend_Feed peut être utilisé en dehors d'un projet utilisant le Zend Framework. Cette partie du tutoriel s'adresse à ceux qui utilisent le framework et a pour but le développement d'un générateur automatique de flux RSS.
A placer avant le code précédent dans /application/scripts/GenererRss.php
/*
** Comme vous pouvez le voir la majorité de ce code est le même que dans
** /public/index.php.
*/
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/..'));
defined('APPLICATION_ENV')
|| define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'devlocal'));
/* Utile pour Doctrine */
defined('APPLICATION_MODELS')
|| define('APPLICATION_MODELS', (getenv('APPLICATION_MODELS') ? getenv('APPLICATION_MODELS') : APPLICATION_PATH.'/models'));
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
get_include_path(),
)));
require_once 'Doctrine.php';
/** Zend_Application */
require_once 'Zend/Application.php';
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
date_default_timezone_set('Europe/Berlin');
$application->getBootstrap()->bootstrap('doctrine'); /* Initialisation de Doctrine */
$application->getBootstrap()->bootstrap('config'); /* Initialisation de la configuration */
$config = Zend_Registry::get('config');
Il suffit maintenant d'indiquer au cron qu'il doit lancer le script GenererRss.php tous les jours.
Automatisation avec le crontab
NlC0@informatix : crontab -e # Dans le crontab : # m h dom mon dow command 0 0 * * * php5 /application/scripts/GenererRss.php
|
AuteurNicolas GAUTRONCréateur et administrateur. http://www.informatix.fr |
Dans la même catégorie
Une version mobile de mon site avec le Zend FrameworkDoctrine et le Zend Framework : Présentation, intégration et utilisation
Un client HTTP / proxy en PHP
Appliquer un layout sur un mail avec le Zend Framework
Activer PHP5 sur un hébergement 1&1
Comment lancer une requête multi-bases avec les fonctions MySQL ?
Implode / Explode : Du tableau à la chaine de caractères, de la chaine de caractères au tableau

