Sortie de eZ Feed Parse 0.1

eZ Feed Parse est une extension eZ Publish fournissant une fonction fetch permettant d'accéder dans un template aux données publiées dans un flux RSS ou ATOM. Cette extension interface le composant Feed des eZ Components et donc tous les formats supportés par ezcFeed sont accessibles.

Plusieurs autres extensions du même genre sont disponibles dans les contributions sur ez.no, mais il semble qu'elles utilisent toutes la classe eZXML qui a été retirée avec la sortie de la version 4.1 d'eZ Publish. Je l'utilise notamment dans la colonne de droite de ce site pour afficher quelques photos issues de Bioutifoul Photos.

Télécharger eZ Feed Parse 0.1

Étude du Planet eZ Publish.fr (2/3) : modules/vues et templates

Suite de la série de billets sur la réalisation du Planet eZ Publish.fr avec dans celui ci quelques notes sur les modules/vues spécifiques ainsi que sur la réalisation des templates.

I. Organisation et Import des articles
II. Modules/vues sur mesure et templates
III. Performances : caches et compagnie

Modules / vues sur mesure

Pour le moment, seuls deux vues spécifiques sont utilisées sur le site.

feed/planet

Cette vue sert à générer le flux RSS du Planet. Comme pour l'import RSS, le composant Feed des eZ Components est utilisé. L'intérêt principal par rapport à l'export RSS de base est la possibilité d'ajouter la balise dc:author avec le nom du site (l'objet parent dans le cas du Planet). Cette vue implémente également un système de cache sur le même principe que le cache de vue. Ce cache est vidé et est re-généré par le script d'import RSS alors que le cache de l'export RSS par défaut expire au bout d'un temps fixe.

planet/search

Cette vue reproduit la vue de recherche par défaut en forçant la recherche dans une sous-arborescence sans avoir besoin de passer le paramètre SubTreeArray. Contrairement à content/search, elle permet également l'utilisation des persistent variables comme sur content/view.

Templates et opérateur

Les templates pour ce site sont assez classiques et plutôt simples compte tenu de la charte graphique basique. Seule « astuce », chaque vue full fixe deux entrées dans les persistent variables ce qui permet de générer un titre et une description pertinents sans aucun fetch supplémentaire dans le pagelayout qui serait synonyme de requêtes SQL et/ou de cache supplémentaire à gérer (voir les dernières lignes du template planet.tpl et les premières du pagelayout.tpl par exemple).

Le seul opérateur spécifique est l'opérateur clean_rewrite_xhtml utilisé à la place de l'opérateur wash pour afficher les attributs Text block contenant le texte issu des flux RSS. Cet opérateur a plusieurs fonctions :

  1. rendre valide le code XHTML avec le module PHP Tidy
  2. réécrire les éventuels URLs relatives à site (images et liens)
  3. supprimer toute trace de Javascript grâce à quelques expressions XPath.

Étude du Planet eZ Publish.fr (1/3) : organisation et import des articles

Cette série de 3 billets présente les principaux points de la conception et de la réalisation du Planet eZ Publish.fr avec eZ Publish.Il s'agit d'un site simple à tous les niveaux, mais il concentre tout de même quelques astuces que j'espère intéressantes !

I. Organisation et Import des articles
II. Modules/vues sur mesure et templates
III. Performances : caches et compagnie

Organisation

Classes de contenu

Pour tout site réalisé avec le CMS eZ Publish, la détermination de l'arborescence ainsi que la définition des classes de contenus est l'étape préliminaire nécessaire. Dans le cas du Planet, le cahier des charges est assez simple, il s'agit d'importer des billets (classe Post) de divers blogs (classe Site) francophones consacrés à eZ Publish. Je souhaitais aussi pouvoir gérer une liste de Planets, le Planétarium, (classe Site également) avec pourquoi pas l'affichage des derniers billets de chaque Planet.

J'ai aussi créé une classe Planete qui sert de page d'accueil au Planet actuel. Le but de la création de cette classe est multiple :

  • elle permet d'avoir un affichage spécifique sans faire une surcharge sur le node id de la page d'accueil qui peut changer aux grès des évolutions du site
  • si un jour je souhaite que la même instance eZ Publish héberge d'autres Planets, le travail sera restreint à la duplication de l'arborescence
  • La définition d'une classe spécifique permet également de faciliter l'écriture des règles de vidage de cache dans le fichier viewcache.ini.

À cela, il faut ajouter les inévitables pages À propos (classe Page) et formulaire de contact (classe Formulaire de contact) ainsi que la classe Folder existante pour des questions d'organisation du contenu et de gestion de cache.

Arborescence

À partir de cette liste de classes, l'arborescence est assez « évidente ». Le découpage se fait naturellement et en plus il permet de gérer facilement les caches template (cache-block) en évitant que tous les blocks n'expirent avec la racine. Elle est aussi prévue pour faciliter la construction du menu horizontal.

Import des articles et nettoyage

Contrairement à un site classique, le contenu sur un Planet provient d'autres sites via leur flux RSS. Ma première idée était d'utiliser le mécanisme d'import RSS d'eZ Publish. J'avais commencé par écrire un Content Edit Handler qui, pour chaque objet Site, créait un import RSS utilisé ensuite par le script de cronjob rssimport.php. Mais la fonctionnalité d'import RSS souffre de plusieurs limitations / bugs gênants :

Le script rssimport.php me semble par ailleurs assez mal écrit, du coup, j'ai choisi d'en écrire un autre quasiment from scratch basé sur le composant Feed des eZ Components et le mapping entre champs du flux et champs des objets Post est fait dans un simple fichier de configuration.

Parallèlement au script d'import RSS, j'ai aussi écrit un script de nettoyage des articles issus des Planets puisque seuls les 5 derniers de chaque source sont liés sur la page Planétarium, autant ne pas encombrer la base pour rien.

Planet eZ Publish.fr !

Voila, à force d'y penser, j'ai fini par développer un Planet eZ Publish francophone, surtout que ce n'était pas grand chose en temps de développement, tout au plus l'équivalent de quelques jours, "graphisme" compris ! Toute ressemblance avec le backoffice d'un célèbre outil de gestion de contenu d'origine norvégienne est une pure coïncidence ;-)

À ma connaissance, il s'agit du troisième Planet utilisant eZ Publish après Planet eZ Publish (l'orginal :)) et le planet Fedora-fr. Si vous avez un blog francophone parlant d'eZ Publish, n'hésitez pas à inscrire votre flux (RSS ou Atom) !

Pour les curieux, le dépôt SVN avec l'ensemble du code est accessible en lecture. Je ferai certainement un article plus technique dans les jours qui viennent.

Des sites francophones sur eZ Publish

Il y'a du mouvement ou plutôt du frémissement dans la communauté eZ Publish francophone. Je viens de voir que le tout neuf blog de Nabil est maintenant repris sur le Planet eZ Publish , je me sens moins seul ;-) Et puis il y a quelques sites / blogs qui parlent plus ou moins régulièrement d'eZ Publish :

Et puis, j'ai découvert viaun fil du forum eZ Publish France , le site Lux Populi qui semble reprendre des articles/traductions de Pascal de Linuxorable , mais je n'ai pas saisi le rapport entre les deux ?

En faisant, cette courte énumération, je me dis qu'on pourrait presque faire un Planet eZ Publish Francophone rassemblant les fils RSS de ces différents sites. Bien sûr idéalement, il serait intègré à eZ Publish France , mais vu le dynamisme de ce site (pas mal de bug, le sondage date d'un an et 3 mois, , la dernière actualité de 5 mois, le dernier article de 2 ans...), je crois que ça va être difficile.

Tags : eZ Publish, RSS, Blog

Flux RSS des billets

Flux RSS des billets

Rechercher sur pwet.fr

À retenir

Derniers commentaires

Archives

Nuage de tags

Bioutifoul photos

Quelques liens

Licence d'utilisation

Contenu sous Licence Creative Commons By-Sa

Sauf mentions spécifiques, les billets et les photos publiés sur ce site sont placés sous la licence Creative Commons by-sa.

Pour toute utilisation dépassant le cadre de cette licence, merci de me contacter par e-mail.