Voici un petit plugin tout simple, tout bête qui ne figurait pas dans mon programme de ces jours, mais qui s'y est invité par la force des choses.
Comme j'ai rencontré ce besoin sur un projet personnel, j'ai dû me bricoler le nécessaire pour pouvoir disposer de balises templates afin de présenter - en dehors du simple widget Lecteur de nouvelles
de Dotclear2 - le contenu d'un flux externe.[1]
En résumé :
- Ce petit plugin n'a aucune interface d'administration et ne nécessite aucune configuration particulière.
- Toute la partie récupération et analyse du flux externe repose sur des classes déjà fournies par Dotclear2 : aucune librairie supplémentaire n'est donc nécessaire.
- Le jeu de balises fourni est disponible dans n'importe quel contexte (home, post, etc.).
- On peut intégrer plusieurs flux dans une même page, mais ils devront chacun disposer de leur propre boucle de traitement : ce plugin n'a rien à voir avec un agrégateur de type
Planet
. - Pour l'instant, la seule documentation se résume aux quelques commentaires présents dans le fichier _public.php.
- Je pense déjà à l'ajout d'une nouvelle fonctionnalité qui pourrait être bien utile, mais je préfère pour l'instant me contenter de valider l'essentiel.
Pour les pré-requis, vous commencez à connaitre la musique : c'est pour du Dotclear 2.0.x.
Si vous êtes intéressé, il ne vous reste plus qu'à télécharger le ZIP (version 1.0-RC1 (4 Ko)).
Vos retours seront les bienvenus.
Notes
[1] Pour ceux qui auraient un peu de mal à voir de quoi je parle, il s'agit grosso merdo
d'un équivalent de ce qui existait pour Dotclear 1.x et connu en tant que RSS Reader
.
Commentaires
#1
mirovinben
lundi 1 septembre 2008, 17:03
Qu'entends-tu par flux externe ? Externe au blog et possible entre blogs d'un multiblogs ? Si voui, voilà un concurrent sérieux à mon plugin OtherBlog. Sniff, une page se tourne...
Je m'en vais le tester ce feedEntries. Miam miam...
#2
Pep
lundi 1 septembre 2008, 19:19
Vi, m'sieur. :-)
Tout ce qui ressemble à un fil de syndication valide (Atom 0.3/1.0 et RSS 1.0/2.0) accessible depuis une URL devrait passer.
Par contre, j'ai oublié de signaler que le plugin ne fonctionnera sans doute pas correctement tel quel avec des solutions de cache statique (dans le style des plugins ou par exemple).
#3
mirovinben
mardi 2 septembre 2008, 06:22
Je me permets une suggestion : Pouvoir utiliser un URL incomplet dans le chemin du flux :
Dans le cas d'un flux du même domaine (typiquement flux d'un autre blog du même multi-blogs), cela permet de mettre en place et de tester sans se soucier du chemin complet. Très pratique pour des tests en localhost.
Je verrais bien un test du genre - si "source" commence par "/" au lieu de "http://" - alors complétude du chemin avec les données connues de Dotclear.
Ais-je été compréhensible ? Est-ce aisément intégrable dans ton extension ?
#4
mirovinben
mardi 2 septembre 2008, 07:26
J'ai trouvé comment faire. J'ai inséré ça :
if(strpos($attr['source'],'http://') === FALSE) { $attr['source'] = 'http://'.$_SERVER['SERVER_NAME'].$attr['source']; }après la ligne 43 du fichier _public.php. Ca fonctionne chez moi mais je ne sais pas si c'est codé dans les règles de l'art.
Je n'arrive pas à insérer correctement mon bout de code ici, j'ai deux crochets qui se sont ajoutés, entourant la nouvelle valeur de $attr.
#5
Pep
mardi 2 septembre 2008, 09:42
L'idée me plait. Je viens de la passer dans le code. Merci. ;-)
J'attends encore un peu avant de refaire le package, afin de décider s'il s'agira d'une beta2 ou de quelque chose qu'on pourrait appeler "release".
#6
Pep
jeudi 4 septembre 2008, 14:29
Je me prépare à diffuser directement une 1.0-RC1.
Au programme :
Je vais m'efforcer de compléter la page wiki dédiée dans la journée.
#7
mirovinben
jeudi 4 septembre 2008, 15:04
J'ai mis à jour...
Héhé, je suis amusé de la façon différente que nous avons de tester URL relative ou absolue. Je présume que ça vient de la fonction http::getHost() mise en œuvre derrière... Je testais si l'URL n'était pas absolue et toi, tu testes si l'URL est relative. Ce qui revient au même mais par des chemins différents.
Ma question devrais plutôt être sur le forum mais je la tente ici : le format http::machin() est-il propre à DC2 ou plus général ? Où puis-je trouver des infos ?
Merci pour tout.
#8
Pep
jeudi 4 septembre 2008, 15:43
En fait, il faut gratter du côté des composants Clearbricks (
inc/clearbricks). On dispose de différents jeux de méthodes statiques pour les opérations courantes.Par contre, pour les librairies communes (celles présentes dans
inc/clearbricks/common/), le gros de la documentation est inexistant et il faut parfois se résoudre à une lecture du code pour comprendre qui fait quoi et comment.J'en profite pour re-signaler un lien récent qui peut s'avérer très utile quand on part en plongée dans le code DC2 : http://doc.dotclear.net/2.0/xref/na...
#9
Pep
jeudi 4 septembre 2008, 20:04
J'avais laissé des boulettes dans le premier tir de la RC1. /o\
Le package en lien est à jour, mais sans changement dans le numéro de version (c'est mal :-p).
#10
Jessica
vendredi 5 septembre 2008, 19:03
Le lien du téléchargement ne semble plus "marcher" ?
#11
Pep
vendredi 5 septembre 2008, 19:28
Petit problème de droits suite au remplacement de l'archive ZIP.
Ça devrait de nouveau être bon.
#12
brol
mardi 9 septembre 2008, 13:15
Ce zinzin fonctionnerait avec une version RC 2.1 de DC2 ?
#13
Pep
mardi 9 septembre 2008, 13:28
Parce que tu ne pourrais pas mettre à jour vers une release, grosse feignasse ?! :-p
Mais la réponse est . Le code est assez passe-partout (normal, vu ce qu'il est supposé faire). Ça doit même tourner sur des betas, je crois.
Le seul truc, c'est que s'il y a un souci avec ces , je ne veux simplement pas en entendre parler. :-)
#14
brol
mercredi 10 septembre 2008, 10:49
Mettre à jour m'obligerait à adapter les thèmes et là j'ai pas le peps pour y parvenir (démotivation générale vs dc et son support à la gueule du client).
Ai installé sur une 2.0, et je ne vois strictement aucun changement par rapport à avant ! Et vu l'indigence de la page d'exemple, je n'imagine même pas le résultat auquel je devrai m'attendre...
C'est qui la feignasse ? :-p
#15
Pep
mercredi 10 septembre 2008, 12:07
Là, faudrait pas pousser mémé dans les orties, non plus...
Gné ? Hein ? Kestudi ? Ça ne remplace pas le widget de base, on est bien d'accord ?
Pour un exemple de mise en œuvre in situ, tu peux aller voir cette page chez mirovinben : http://www.mirovinben.com/blogtest/...
Et on ne t'a jamais dit que les codeurs avaient des difficultés pour écrire de la doc et commenter leur code ? :-p
#16
brol
mercredi 10 septembre 2008, 12:42
Je parlais pas de toi, Mémé ;-)
Bon, faut donc mettre du code... mais quoi donc ?
Mon idéal serait d'avoir grosso modo la même chose qu'avec rss reader sous dc1, à caser donc dans une sidebar...
Si je comprenais ce dont il s'agit, je te la rédigerai ta doc...
#17
mirovinben
mercredi 10 septembre 2008, 12:55
Je vais de ce pas compléter la page de mon blog de test avec l'affichage des templates "pepiennes" mises en œuvre.
#18
Pep
mercredi 10 septembre 2008, 13:02
Ah ben si, quand même.
Pour en revenir à nos moutons, est-ce que cet exemple là te parle plus ?
http://callmepep.org/bricoland/dc2-...
#19
Pep
mercredi 10 septembre 2008, 13:05
mirovinben > Zuper ! :-)
#20
mirovinben
mercredi 10 septembre 2008, 13:23
Zuper voui, sauf que je n'y arrive pas... Les fonctions templates sont interprétés même dans des balises <pre></pre> et j'utilise une page related en *.html... donc qui sait interpréter (grâce en soit rendu à son auteur)les fonctions templates... justement.
#21
Pep
mercredi 10 septembre 2008, 13:25
Ach !
#22
brol
mercredi 10 septembre 2008, 13:30
Non, Mémé, je t'assure.
Euh, je mets ton code dans un widget texte et c'est franchement pas probant...
#23
mirovinben
mercredi 10 septembre 2008, 13:48
Bon, je viens de bidouiller en créant une page related en *.php et en plaçant le source entre <pre> et </pre> dans l'extrait. Et j'ai modifié la page que tu donnes en lien pour... hum... donner le lien vers le code-source.
Voili-voilà
#24
mirovinben
mercredi 10 septembre 2008, 13:52
Brol, faut que tu place les fonctions templates de Pep (comme toutes les autres d'ailleurs) dans une page qui soit examinée par le "pré-compilateur" donc, typiquement, home.html, post.html (etc...) ou, l'idéal, une page related (nouvelle version) avec comme précaution de lui donner comme extension *.html et non *.php.
La preuve ? ça fonctionne comme ça dans mon blog de test (dans sidebar, rubrique "plugin Otherblog").
#25
Pep
mercredi 10 septembre 2008, 13:53
brol > Tu le fais exprès ?! :-)
Qu'est ce que tu n'as pas compris dans ? :-p
Ça n'a pas à aller dans un widget texte qui n'interprète rien du tout. Le bout de code pourrait aller dans la sidebar d'un
home.html- par exemple -, voire directement dans un_footer.htmlpour figurer sur toutes les pages, etc.En gros, le code va dans n'importe quel fichier template.
#26
brol
mercredi 10 septembre 2008, 13:56
Si je mets le code dans un fichier related *.html, comment tu fais pour afficher le zinzin dans la sidebar ?
#27
brol
mercredi 10 septembre 2008, 13:58
@ Pep : c'est quand même plus pratique d'utiliser les widgets plutôt que de revenir à du bidouillage à la DC1 ? C'est bien le but des widgets, nan ?
#28
Pep
mercredi 10 septembre 2008, 14:25
brol > En l'état - même si ça s'apprête à changer - tout n'est pas possible par les widgets, à commencer par l'impossibilité d'avoir un widget hors d'un conteneur dédié, généralement scotché dans une sidebar. Ensuite, un widget permet généralement (très) peu de personnalisation au niveau de la sortie XHTML.
C'est d'ailleurs ces deux restrictions qui ont conduit au développement de feedEntries. Mais il me semblait que c'était clair dans le billet ... :-p
Et puis, de toute manière, il est prévu d'avoir également un widget dans feedEntries. Son rendu sera personnalisable par un bout de template. Mais je ne sais pas encore quand je m'en occuperai puisque j'ai pas mal d'autres trucs à faire pour DC2 et DotAddict.org avant.
#29
brol
mercredi 10 septembre 2008, 15:41
Un truc comme Dcom serait assez souple, non ?
#30
Pep
mercredi 10 septembre 2008, 16:09
Oui mais ça donne un aspect vraiment trop usine à gaz à l'interface de configuration du widget.
#31
brol
mercredi 10 septembre 2008, 18:07
Comment ça "usine à gaz" ?
Y a pas tant de champs que ça... et avec Dcom on peut au moins intégrer facilement des balises pour mettre en forme tout ça à coup de css ;-)
M'est avis que tu tends à faire ta feignasse 8-)
#32
Pep
mercredi 10 septembre 2008, 18:19
Non, là, je crois que tu n'y es pas. :-)
#33
brol
mercredi 10 septembre 2008, 22:29
Ben esssplique ;-p
#34
Kemar
jeudi 11 septembre 2008, 13:05
Wouhou génial ce plug-in ! C'est ce qu'il me fallait. J'ai joué avec vite fait, je crois que les entités html ne sont pas encodées dans les
FeedEntryURL, genre les &. J'ai modifié un peugetExcerpt()car ça renvoie lecontentsi ladescriptionn'est pas présente. Peut-être qu'un argument degetExcerpt()pourrait gérer ce comportement ?#35
Pep
jeudi 11 septembre 2008, 13:37
Yo Marc et merci. ;-)
Concernant tes remarques :
{{FeedEntryURL}}, je préfère envoyer en brut et laisser l'intégrateur ajouter l'attributencode_html="1"lors de l'utilisation de la balise.getExcerpt(), c'est un comportement voulu. En fait, on dispose de deux balises distinctes :{{FeedEntrySummary}}: ne se base que sur la description présente dans le flux{{FeedEntryExcerpt}}: retourne seulement la description si présente, ou le contenu nettoyé de toutes balises XHTML sinon (et là, il est préférable de coller un attributcut_string="##"si on ne veut pas que ça dérape ;-) ).Et oui, tout cela aurait été plus clair avec une vraie doc. :-p
#36
Kemar
jeudi 11 septembre 2008, 13:57
encode_html="1", ok got it :) Merci#37
keusta
jeudi 11 septembre 2008, 16:05
Et pour DC 1.2.x, c'est possible ?
?
?
:D
ok je sors ->
#38
brol
jeudi 11 septembre 2008, 17:43
@ keusta : rss reader existe pour dc1.
#39
castor.toma
dimanche 21 décembre 2008, 16:46
Et c'est n'est pas possible de l'inclure dans un billet ?
#40
Pep
dimanche 21 décembre 2008, 20:04
castor.toma > Non, puisque les balises de templates dans des corps de billets ne sont pas interprétées.
A la limite, si tu disposes de la version de diffusée ici, tu peux faire une page related incluse (en .html).
Sinon, il te reste toujours le moyen de faire un gestionnaire d'URL personnalisé qui renverra le résultat d'un fichier template spécifique.