Informatix le gaulois

Tutoriels et outils pour l'informatique.

Informatix > Tutoriels > PHP > Créer son flux RSS simplement avec Zend_Feed

Créer son flux RSS simplement avec Zend_Feed

Mettre 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
	
Nicolas GAUTRON

Auteur

Nicolas GAUTRON
Créateur et administrateur.
http://www.informatix.fr



^ Haut de page ^



Dans la même catégorie

Une version mobile de mon site avec le Zend Framework
Doctrine 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


Commentaire(s)



^ Haut de page | Commentaires ^