Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour à tous,
Je suis actuellement en train de développer un site et j'aimerais lui intégrer un flux rss. Je voulais savoir s'il y était possible de créer ce flux avec la ZF ?
A priori, je n'ai pas vu dans la doc un outil qui me permettrait de faire ceci par le biais du framework - Zend_feed permet juste de lire ces flux, non ? (je me trompe peut être...)
Merci,
Allfab
Hors ligne
Oui tu te trompes
Je te poste le code du rss de mon site perso, tu devrais arriver à l'adapter
<?php require 'Zend/Feed.php'; class FeedController extends MoOx_Controller_Action { public function init() { parent::init(); $this->_helper->viewRenderer->setNoRender(); $this->nbEntries = $this->_request->getParam('nbEntries',20); $this->feedFormat = $this->_request->getParam('format','rss'); $this->_prepareEntries(); } private function _prepareEntries() { $postsTmp = $this->blog->getLastContents($this->nbEntries); $this->entries = array(); foreach ($postsTmp as $post) { $urltitle = explode('-',$this->view->urlize($post->title)); $oldUrltags = explode('-',$this->view->urlize($post->tags)); $urltags = array(); $i = 0; foreach($oldUrltags as $w) { if (!in_array($w,$urltitle)) { $urltags[] = $oldUrltags[$i]; } $i++; } $url = $this->view->url( array( 'id' => $post->id, 'tags' => implode('-',$urltitle).'+'.implode('-',$urltags) ), 'billetDeBlog', true ); $this->entries[] = array( 'title' => $post->title, 'link' => 'http://mr.moox.fr'.$url, 'description' => $this->view->bbcode($this->view->content($this->view->contentIntro($post->content))), 'lastUpdate' => strtotime($post->date), 'content' => $this->view->bbcode($this->view->content($post->content)) ); } } public function indexAction() { // prepare an array that our feed is based on $this->feedArray = array( 'title' => 'Le blog de Mr.MoOx - Web et Conneries', 'link' => _URL, 'lastUpdate' => (0 == count($this->entries) ? date('c', strtotime()) : date('c')), 'charset' => 'utf-8', 'description' => "Des actualités en tous genres et sur les technologies web (XHTML, CSS, Javascript, AJAX, PHP, Zend Framework...). Et bien sur, tout ça avec une touche d'humour!", 'author' => 'Maxime Thirouin aka Mr.MoOx', 'email' => 'contact@moox.fr', 'copyright' => 'Mr. MoOx, all rights reserved', 'generator' => 'Rewix (using Zend Framework Zend_Feed)', 'language' => 'fr', 'entries' => $this->entries ); // create feed document $feed = Zend_Feed::importArray($this->feedArray, $this->feedFormat); // adjust created DOM document (je sais pas trop à quoi ca sert... mais apparement c pas vital) /* foreach ($feed as $entry) { $element = $entry->summary->getDOM(); // modify summary DOM node }*/ // send feed XML to client $feed->send(); } } ?>
Hors ligne
Ok merci bien,
Vais de ce pas regarder ce que tu as fais et l'adapter à mon code !!
Content de m'être tromper....
Bonne soirée
Dernière modification par allfab (21-01-2008 18:11:15)
Hors ligne
Bonjour,
J'ai réussi à adapter ton code et à générer un flux qui est ouvert par le biais du navigateur utilisé et ceci grâce à "$feed->send();".
Ce flux est donc généré à la volée lorsque que j'accède à mon controlleur et à l'action correspondante. Par contre, je désire l'enregistrer dans un fichier xml qui permettra aux abonnés du site de consulter le site via google Reader ou équivalent et de suivre l'évolution de celui ci mais je ne vois pas de methode adéquate.
Il y a bien la méthode ->saveXML(), mais celle ci ne me renvoit pas grand chose !!
Merci
Bonne Aprèm
Allfab
Hors ligne
Tu n'a pas vraiment besoin de l'enregistré en xml, perso si tu accèdes à mon flux via l'url controller/action (http://mr.moox.fr/feed/atom ou http://mr.moox.fr/feed/rss) ça marche très bien. Mon flux est dispo avec n'importe quel navigateur/aggrégateur (j'ai apr exemple testé le mien avec netvibes)
Si tu l'enregistre, tu devra le regénérer à chaque modifications. Alors qu'avec la technique send(), pas besoin il est regénérer à chaque fois!
Hors ligne
Bonjour,
mon lien menant vers mon flux rss me propose de télécharger un fichier de type application/rss+xml contrairement aux votre qui envoient vers une page d'abonnement au flux.
pour info mon code :
public function rssAction() { $this->news = new News(); $nouvelles = $this->news->getNewsByLimit ( 10, 0 ); // flux des 10 dernieres entrees //print_r($nouvelles); $tempnouvelle = $nouvelles->current (); $pubDate = strtotime($tempnouvelle->date); $urlDeBase = 'http://127.0.0.1' . $this->_request->getBaseUrl (); $feedArray = array ('title' => 'Marenla', 'link' => $urlDeBase . '/index/rss', 'description' => 'dernières informations', 'language' => 'fr-fr', 'charset' => 'utf-8', 'lastUpdate' => $pubDate, 'generator' => 'Zend Framework Zend_Feed', 'entries' => array ( ) ); foreach ( $nouvelles as $nouvelle ) { $feedArray ['entries'] [] = array ( 'title' => $nouvelle->titre, 'link' => $urlDeBase . '/index/voir/id/' . $nouvelle->id, 'guid' => $urlDeBase . '/index/voir/id/' . $nouvelle->id, 'description' => $nouvelle->contenu, 'content' => $nouvelle->contenu, 'lastUpdate' => strtotime($nouvelle->date)); } print_r($feedArray); $feed = Zend_Feed::importArray ( $feedArray, 'rss' ); foreach ($feed as $entry) { $element = $entry->summary->getDOM(); } // pas de layout.html Zend_Layout::getMvcInstance ()->disableLayout (true); $this->_helper->viewRenderer->setNoRender(); $feed->send(); }
Je ne sais pas du tout d'où ça peut venir, une idée ?
Hors ligne
Est-ce tehniquement possible de savoir combien de personnes sont "abonnées" à un flux RSS ?
Hors ligne
up... bon c'est déjà la discussion en tête de liste mais je bloque toujours donc ..^^
Hors ligne