Créer un flux RSS avec symfony 1.4

. lecture : 2 minutes

Un flux RSS, qu'est ce que c'est ? Il s'agit d'un fichier texte, utilisant une syntaxe compréhensible par un ordinateur. En affichant les billets de mon blog dans un flux RSS, je permet à des logiciels, appellés agrégateurs, de vérifier automatiquement et périodiquement s'il y a des nouveautés sur le site.

Quelqu'un utilisant Google Reader par exemple, peut alors "suivre" de nombreux sites à la fois, sans avoir à vérifier quotidiennement chacun des sites.

Imaginons alors que vous cherchez à créer un flux RSS pour un moteur de blog. Si vous avez déjà une page qui affiche la liste des billets, c'est facile !

Pour epinardscaramel, j'avais déjà la route suivante, pour afficher tous les billets d'un même "type" (blog, test, ou programme) :

    type_liste:
      url:     /:type
      class:   sfDoctrineRoute
      options: { model: Content, type: object }
      param:   { module: contenu, action: index }
      requirements:
        sf_method: [get]

(cf. le billet sur le routing de symfony, pour comprendre de quoi je parle)

Plutôt que de créer une nouvelle route pour chaque flux RSS que je veux créer, je peux ajouter l'option "sf_format" aux routes existantes; le routing précedant devient alors :

    type_liste:
      url:     /:type.:sf_format
      class:   sfDoctrineRoute
      options: { model: Content, type: object }
      param:   { module: contenu, action: index, sf_format: html }
      requirements:
        sf_method: [get]
        sf_format: (?:html|xml)

Avec cette modification, les URLs de mon site devienent :

  • epinardscaramel.com/blog, pour afficher les billets du blog, et
  • epinardscaramel.com/blog.xml, pour avoir la même chose sous forme de flux RSS.

Symfony reconnait plusieurs types pour "sf_format" : txt, js, css, json, xml, rdf, atom. Une fois sf_format renseigné, symfony se charge d'utiliser le bon header HTTP, et charge le template correspondant :

Dans le cas de mon flux RSS, il ne me restait plus qu'à créer le template "indexSuccess.xml.php", et d'afficher les billets non plus sous forme de liste, mais à l'interieur d'un flux RSS standard, cf. RSS 2.0 Specification, en anglais.


Manu·e

La personne qui a créé Épinards & Caramel. ☕🤔🐙

Étiquettes

In English Copié de l'ancien site Machinima Maths Épinards et Caramel Juste un lien Livre PHP Galerie d'images Connerie WoW 3615 Ma vie Conseil Actualités Film Jeux vidéos symfony 1.4 Hack DEFCON javascript Vidéos TED & TEDx Musique Piratage Réflexions IBM IA (Intelligence artificielle) Zombi Logiciel Télé Science Site internet Style Google Pentesting Code Boulot Religion Twitter Facebook Design Économie Ubuntu C'était mieux avant Symfony2 Comédie Musicale WebGL Europe Android Argent Bitcoin Sécurité informatique Cryptographie Robots Linguistique Wikileaks USA Haïti Open world game Apple Cloud HADOPI Loi Internet Minecraft Plugin Tracking Publicité Visualisation de données Last.fm Python Canvas Serious game Humour Podcast Techno-thriller Espace Norvège Nutrition Informatique Linux Firefox Jquery Science Fiction Windows Bricolage Pieuvres Wikipedia In Italiano Italie CSS Dwarf Fortress Canal+ Hardware User experience design Lego France Grèce Allemagne Photographie Censure de l'Internet Chine Écologie Vie privée Islam Maroc Violence physique Sex XIXe siècle Histoire Brésil Portugal Échecs Logique Microsoft Steam Opera Graphisme Finance Sondage Food Traduction Paris Canada Surveillance de l'Internet Horreur Algorithmique Unicode & Emoji Physique Santé Tribute MMORPG Finlande Russie XXe siècle Seconde Guerre Mondiale Langage Star Wars Impression 3D Death Framework Politique Typographie NASA Polémique Mars Féminisme Violence sexuelle Libertés fondamentales Corée du Sud Suisse Japon Toys Concurrence Droit d'auteur Éducation Estonie UK Égypte Indonésie Théâtre ONU Peine de mort Abeilles Prix Nobel En español Cannabis Aléatoire Censure Applications mobiles Course Homosexualité Danse Adobe NPR Mozilla Guitare Homophobie Mariage TWiT Settings Français DARPA Boston Dynamics Nerdfighteria Cancer Traitement de l'image Armes Secte de Scientologie The Onion Tumblr ADHD Drugs Scandale Césars Paradis fiscaux Copyright Documentaire Yahoo BDSM Post-apocalyptic Sword & Laser Virtual reality Spam Mali Timbuktu Manuscripts Crowdfunding indiegogo RSS Feedly Free Youtube Magie Meta Puzzle Tetris Grève Vocabulaire Bateaux Système métrique Vision artificielle Apprentissage automatique Traduction automatique Traitement du langage naturel Alan Turing meme Pixar Psychologie Debate Éclipse Ciel & Espace Organisation Google Analytics D3.js Vexillologie Oracle Juridique Saisons Astronomie Comète Rosetta ESA Pokémon Go Critiques, tests Programmes Élections Scrutin Météo Changement Climatique Tractors PUBG Capitalisme Changement d’heure Anarchisme Écriture Inclusive Bisexualité Game Jeux de société Toulouse Évènement