Freelance Expert Technique Magento - ZF – CrĂ©er un flux RSS avec Zend_Feed

CONTACT
RSS

ZF – CrĂ©er un flux RSS avec Zend_Feed

Les flux rss sont gĂ©nĂ©ralement crĂ©Ă©s automatiquement en fonction de vos actualitĂ©s pour qu’un utilisateur l’utilise sur son agrĂ©gateur RSS (Google Reader par exemple). Le Zend Framework permet de les gĂ©nĂ©rer en respectant le standard RSS.

On va partir du principe où les informations propres à tout le site sont stockées dans des fichiers de configurations ini et les informations récupérées dans le flux (ici les news), dans la base de données.

Les fichiers de configuration

Pour cet exemple, on va utiliser mail.ini et site.ini, stockĂ© dans “/application/config/” de votre application Zend.

mail.ini

[mail]
mail.adresse = "nom@fai.com"
mail.denomination = "Votre Nom"

site.ini

[site]
site.name = "Nom du site"
site.description = "Site Dev. Web et Actu"

Le contrĂ´leur

Créez donc votre contrôleur qui va bien :


class RssController extends Zend_Controller_Action { }

On voudrait que le flux soit créé à cette adresse : http://www.votredomaine.com/rss/

function indexAction() {
	// On instancie la table news de la bdd
	$table = new Default_Model_Db_News();

	// Puis les deux fichiers ini
	$config = new Zend_Config_Ini('application/config/site.ini', 'site');
	$mail = new Zend_Config_Ini('application/config/mail.ini', 'mail');

        // l'url de base
       $urlDeBase = App_Tool_Uri::getUri();

	// on crée la requête qui va bien, les news valides (elles sont à 1), par ordre décroissant et limité à 10 news.
	$select = $table->select()
                    ->where('news.valid = ?', '1')
                    ->order('date DESC')
                    ->limit('10');

	// on récupère toutes les news de la table
	$news = $table->fetchAll($select);

	// On crée un tableau qui recense les informations principales
	$feed = array(
		'title' => "Flux RSS - " . $config->site->name, // On récupère le nom du site qui est stocké dans le fichier ini.
		'link' => $urlDeBase . '/rss/', // Lien vers le flux
		'charset' => 'utf-8', // Le type d'encodage, ici utf-8
		'description' => $config->site->description, // description
		'author' => $mail->mail->denomination, // L'auteur du site
		'language' => 'fr', // Rien de compliqué, la langue...
		'entries' => array() // Un tableau qui va contenir toutes les news
	);

        // On récupère tous les articles envoyés par la requête sql pour les placer dans les items qui vont bien.
	foreach ($liste as $article) {
		$feed['entries'][] = array(
			'title' => $article -> titre, // On récupère dans la base de données le titre de la news
			'link' => $urlDeBase . "/voir/id/" . $article->id, // Le lien vers l'article, ici dans l'action "voir"
			'description' => utf8_encode($article -> contenu), // La description (ou le contenu) de l'article
            'source' => $urlDeBase // l'url de base pour récupérer la source.
		);
	}

	// On rend inactif le Layout
	Zend_Layout::getMvcInstance()->disableLayout ();
	$rss = Zend_Feed::importArray($feed,'rss');
	// Et on envoi le flux rss !
	$rss->send();
}

VoilĂ  c’est crĂ©Ă© ! Vous pouvez maintenant l’ajouter dans le header de votre Layout :


<link rel="alternate" type="application/rss+xml" href="<?php echo $this->baseUrl() . "/rss/"; ?>" title="Flux RSS sur <?php echo $this->baseUrl(); ?>" />

Si vous n’avez pas compris ce passage :

// l'url de base
$urlDeBase = App_Tool_Uri::getUri();

Allez lire ce merveilleux tuto ! Pareil pour la manipulation des fichiers ini, lĂ .

N’hĂ©sitez par Ă  mettre un commentaire en cas de question ou erreur de ma part ! De plus, n’hĂ©sitez pas Ă  lire la documentation officielle de Zend_Feed !

CATÉGORIES :

Php

, Zend

    • stefy
    • December 9th, 2011

    bonjour ton tuto est génial

    mais j’ai crĂ©er le ras mais j’ai un petit problème quant j’utilise le ras il me dit que je n’ai pas d’article comment je peut rĂ©soudre mon problème? merci

  1. No trackbacks yet.