- ^ Fondamentaux
- ^ Les réponses: générer du contenu
- Générer une page HTML
- Générer du texte brut
- Générer du XML quelconque
- Générer un flux de syndication RSS
- Générer un flux de syndication Atom
- Générer un PDF à partir d'un contenu LaTeX
- Générer un PDF avec TCPDF
- Renvoyer un fichier binaire
- Générer un fichier zip
- Générer une interface utilisateur en XUL
- Générer du RDF
- Générer un sitemap
Section: Générer un flux de syndication RSS
« Générer du XML quelconque | ^ Les réponses: générer du contenu | Générer un flux de syndication Atom » |
− Table des matières
Jelix permet de générer un fil RSS assez facilement grâce à jResponseRss20
. Cet objet prend en charge totalement la spécification RSS 2.0. Comme tout type de réponse, la première chose à faire est de récupérer l'objet jResponseRss20 (alias "rss2.0").
$rep = $this->getResponse('rss2.0');
Informations sur le fil rss ¶
jReponseRss20 possède tout d'abord une propriété infos
, qui est un objet permettant de spécifier les propriétés du fil RSS : son titre, l'url du site, le copyright, la description etc. Exemple :
$rep->infos->title = 'Actualité de Jelix';
$rep->infos->webSiteUrl= 'http://jelix.org/fr/';
$rep->infos->copyright = 'Copyright 2006-2008 jelix.org';
$rep->infos->description = 'Actualité sur le framework PHP5 Jelix';
$rep->infos->updated = '2007-06-08 12:00:00';
$rep->infos->published = '2007-06-08 12:00:00';
$rep->infos->ttl=60;
Les champs updated
et published
sont des dates qui indiquent respectivement la date de dernière mise à jour du fil RSS, et la date de publication du channel RSS. On peut mettre la même date. Ces dates sont en général déterminées par la date de publication de l'item le plus récent qui sera présenté dans le fil. Par exemple, pour un fil RSS d'un blog, ce sera la date du dernier billet.
La propriété ttl
indique à l'agrégateur de l'utilisateur, la durée (en minute) pendant laquelle il peut mettre le contenu en cache avant de redemander le fil RSS.
Par défaut, la description doit être du texte normal. Cependant vous pouvez indiquer du HTML ou XHTML. Dans ce cas vous devez l'indiquer dans la propriété descriptionType
, qui peut prendre la valeur "html", "xhtml" ou "text".
Informations sur les items ¶
Il faut ensuite remplir le channel avec les items que vous voulez publier. Pour un blog par exemple, les items seront les descriptifs des derniers billets publiés.
Pour chaque item, vous devez appeler la méthode createItem()
de jResponseRss20
pour récupérer un objet qui contiendra les informations de l'item. Vous remplissez alors cet objet et vous le stockez dans l'objet jResponseRss20
avec la méthode addItem()
.
Voici un exemple avec une dao de news :
$newsdao = jDao::get('news');
$first = true;
// ici on récupère la liste des 10 dernières news
// on suppose que la liste est classé de la plus récente à la moins récente
// (méthode définie dans la dao)
$list = $newsdao->findTenFirstNews();
foreach($list as $news){
if($first){
// le premier enregistrement permet de connaitre
// la date du channel
$rep->infos->updated = $news->date_create;
$rep->infos->published = $news->date_create;
$first=false;
}
// on récupère l'url de l'article de news
$url = jUrl::get('news~default:article', array('newsid'=>$news->id));
// on crée un item RSS, en donnant un titre, une url, une date au format [yyyy-mm-jj hh-mm-ss]
$item = $rep->createItem($news->title, $url, $news->date_create);
// auteur de la news
$item->authorName = $news->author;
// contenu HTML de la news
$item->content = $news->content;
$item->contentType='html';
//dans notre exemple, on dit que l'url de la news est considéré
// comme étant l'id de la news
// dans le cas contraire, on aurait pu mettre $item->id =$news->id
$item->idIsPermalink = true;
// on ajoute l'item dans le fil RSS
$rep->addItem($item);
}
Autres informations ¶
Il est possible d'indiquer plus d'informations sur le fil rss ou sur chaque item. Consultez la documentation de reference sur les classes jRSS20Info et jRSSItem.