Créer un flux RSS avec Cakephp 1.3.x

Un flux rss est devenu un standard sur un site internet. Je vous présente alors un tutoriel de création de flux rss pour cakephp.

Dans le fichier app/config/routes.php, ajouter cette ligne de code :

Router::parseExtensions('rss');

Ensuite voici le code que l’on doit retrouver dans le controller posts dans app/controllers/posts_controller.php

<?php
class PostsController extends AppController {

var $name = ‘Posts’;
var $components = array(‘RequestHandler’);
var $helpers = array(‘Text’);

var $scaffold;

function fluxrsspost(){
$postsflux = $this->Post->find(
‘all’,
array(
‘order’ => array(‘Post.created’=>’desc’),
‘limit’ => 25,
)
);

$this->set(‘posts’, $postsflux);
}
}
?>

Le layout de la vue des flux rss de votre application ou site qui se trouve dans app/views/layouts/rss/defaults.ctp

<?php
echo $this->Rss->header();
if (!isset($documentData)) {
$documentData = array();
}
if (!isset($channelData)) {
$channelData = array();
}
if (!isset($channelData['title'])) {
$channelData['title'] = $title_for_layout;
}
$channel = $this->Rss->channel(array(), $channelData, $content_for_layout);
echo $this->Rss->document($documentData,$channel);

?>

Pour finir la vue du flux rss pour posts dans app/views/posts/rss/fluxrsspost.ctp

<?php
$this->set('documentData', array(
'xmlns:dc' => 'http://purl.org/dc/elements/1.1/', 'xmlns:atom'=>'http://www.w3.org/2005/Atom'));

$this->set(‘channelData’, array(
‘title’ => __(« RSStuto : 25 derniers posts », true),
‘atom:link’ => array(
‘attrib’ => array(
‘href’ => ‘http://localhost/RSStuto/posts/fluxrsspost.rss’,
‘rel’ => ‘self’,
‘type’ => ‘application/rss+xml’)),
‘link’ => $this->Html->url(‘/’,true),
‘description’ => __(« RSStuto : 25 derniers posts », true),
‘language’ => ‘fr-fr’));

foreach ($posts as $post) {
$postLink = array(‘plugin’=>null,
‘controller’=>’posts’, ‘action’=>’view’ ,$post['Post']['id']);

// Voici la partie où nous nettoyons le corps du texte pour l’afficher comme description
// de l’item rss, ceci exige d’avoir seulement du texte pour s’assurer de valider le flux
$corpsTexte = strip_tags($post['Post']['body']);

echo  $this->Rss->item(array(), array(
‘title’ => $post['Post']['title'],
‘link’ => $postLink,
‘description’ =>  $corpsTexte,
‘pubDate’ => $post['Post']['created']));
}

?>

J’espère que ce tutoriel sur le flux rss cakephp vous aura été utile et pour ceux qui veulent gérer les erreur 404 cakephp, jetez un oeil sur Renardudezert

N’hésitez pas à me faire par de votre méthode.