Section: Générer un flux de syndication Atom
« Générer un flux de syndication RSS | ^ Générer du contenu avec les vues | Générer un PDF avec TCPDF » |
− Table des matières
Jelix permet, en plus de RSS, de pouvoir générer un fil Atom 1.0.
Pour cela il faut utiliser l'objet jResponseAtom10
, qui prend en charge
quasiment la totalité de la spécification Atom 1.0.
Son alias est "atom1.0".
$rep = $this->getResponse('atom1.0');
La manipulation de jResponseAtom10 est identique à jResponseRss20. La différence se situe sur quelques propriétés dans les informations du fil ou des items.
Cependant, pour utiliser cet objet réponse, vous devez installer le module jfeeds. Voyez la documentation pour RSS
Informations sur le fil atom ¶
jResponseAtom10, comme jResponseRss20, possède une propriété infos
, qui
est un objet permettant de spécifier les propriétés du fil Atom. Exemple :
$rep->infos->title = 'Actualité de Jelix';
$rep->infos->webSiteUrl= 'http://jelix.org/fr/';
$rep->infos->copyright = 'Copyright 2017 jelix.org';
$rep->infos->description = 'Actualité sur le framework PHP Jelix';
$rep->infos->updated = '2017-06-08 12:00:00';
$rep->infos->selfLink=jUrl::get();
Le champ updated
est la date de dernière mise à jour du fil Atom. Elle est
en général déterminée par la date de publication de l'item le plus récent qui
sera présenté dans le fil. Par exemple, pour un fil Atom d'un blog, ce sera la
date du dernier billet.
La propriété selfLink
est l'url de ce fils Atom.
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
jResponseAtom10
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
jResponseAtom10
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;
$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 ATOM, en donnant un titre, une url, une date
$item = $rep->createItem($news->title, $url, $news->date_create);
// auteur de la news
$item->authorName = $news->author;
// résumé de la news en HTML
$item->summary = $news->summary;
$item->summaryType = 'html';
// contenu HTML de la news
$item->content = $news->content;
$item->contentType = 'html';
// on ajoute l'item dans le fil ATOM
$rep->addItem($item);
}
Autres informations ¶
Il est possible d'indiquer plus d'informations sur le fil atom ou sur chaque item.
Consultez la documentation du module jfeeds.