Widget dotclear 2.0 : del.icio.us
Par Pascal MARTIN le lundi 21 avril 2008, 08:00 - Lien permanent
Vous utilisez le service del.icio.us pour mémoriser vos favoris, et vous voudriez une partie de ceux-ci au sein d'une des barres latérales de votre blog sous Dotclear 2 ?
Le Widget del.icio.us pour dotclear2 devrait répondre à votre besoin !
Sommaire
- Téléchargement
- Présentation : que fait ce plug-in ?
- Configuration : quelles sont les options configurables dans l'interface d'administration ?
- Petite histoire : pourquoi ce plug-in ?
- Explications techniques
- Retours
Téléchargement
Ce plug-in est actuellement disponible en version 0.4 (testé sous dotclear 2 beta 7)
Pour toute remarque, suggestion, bug-report, ou commentaire, n'hésitez pas à laisser un commentaire !
Présentation
Le Widget del.icio.us pour Dotclear 2 a pour but de vous permettre d'afficher vos derniers favoris enregistrés à l'aide du service Delicious dans une des barres latérales de votre blog.
Démonstrations
- blog.pascal-martin.fr : Dans la barre latérale droite
Si vous utilisez ce widget sur votre blog, n'hésitez pas à laisser un lien en commentaire, que je le rajoute ici !
Configuration
Pour vous permettre d'ajuster au mieux le fonctionnement du wigdet, un grand nombre d'options sont disponibles via l'interface d'administration.
Notez que la majorité des options ont une valeur par défaut adaptée à la plupart des besoins, et que vous n'aurez besoin d'en modifier que quelques unes.
Je vous laisse cliquer pour la capture d'écran (ouverture dans la fenêtre courante)
Titre
Le titre qui sera affiché pour le bloc du Widget
Login del.icio.us
Votre identifiant de compte del.icio.us, de manière à pouvoir récupérer vos favoris.
Password del.icio.us
Le mot de passe de votre compte del.icio.us
L'API del.icio.us ne permet de récupérer les favoris d'un utilisateur que lorsque c'est l'utilisateur en question qui en fait la requête, après s'être identifié.
Le plugin a donc besoin de connaître votre couple login/password pour pouvoir récupérer vos derniers favoris.
Ce couple login/password ne sera diffusé à aucune partie autre que le service del.icio.us
Note : Ce widget est sous licence open-source ; vous pouvez donc vérifier par vous-même qu'il ne fait pas n'importe quoi avec votre couple identifiant / mot de passe !
Nombre de Favoris (max) à afficher
Le nombre de favoris qui sera affiché, au maximum.
(Au maximum car il se peut qu'il n'y ait pas assez de favoris récents répondant aux tags demandés)
Exclusion des favoris porteurs des tags
Si un favoris del.icio.us porte un des tags "interdit" présent dans cette liste, il ne sera pas affiché par le widget.
Et ce même s'il porte aussi un des tags autorisés.
Notez que quoi qu'il en soit, indépendamment de tout tag, les favoris marqués "privés" sur del.icio.us ne seront jamais affichés.
Inclusion des favoris porteurs des tags
Seuls les favoris porteurs de l'un des tags présents dans cette liste seront affichés.
Les caractères reconnus comme séparateurs sont les suivants :
- Retour à la ligne
- Espace
- Virgule
- Point-virgule
Afficher les Favicons
Si cette case est cochée, le widget essayera d'afficher les favicons des sites correspondant aux adresses en favoris.
Image quand Favicon non trouvé
Dans le cas où l'option "Activer les favicons" est activée, cette option correspond à l'URL de l'image à afficher dans le cas où un Favicon n'est pas trouvé pour un site.
Note : l'image pointée par l'URL doit avoir une taille de 16x16 pixels.
Laisser vide pour n'afficher aucune image à la place des Favicons non trouvés.
Afficher les dates
Si cette option est activée, les favoris seront regroupés par dates d'enregistrement.
Quoi qu'il en soit, les favoris sont toujours affichés par date décroissante : cette option n'influe que sur l'affichage ou non des dates.
Afficher le lien "Voir tous"
Si cette option est activée, un lien vers vos favoris sur le site de del.icio.us sera affiché en bas de la liste des favoris affichés par le widget.
Texte du lien "Voir tous"
Le texte du lien pointant vers vos favoris sur le site de del.icio.us.
Note : Affiché seulement si l'option "Afficher le lien voir tous" est cochée.
Identifiant du bloc "Voir tous"
L'identifiant (attribut HTML "id") du lien pointant vers vos favoris sur le site de del.icio.us, pour vous faciliter sa personnalisation via une feuille de styles CSS.
Identifiant du bloc del.icio.us
L'identifiant (attribut HTML "id") de l'ensemble du bloc affiché par le widget, pour vous faciliter sa personnalisation via une feuille de styles CSS.
Classe du bloc del.icio.us
La classe (attribut HTML "id") de l'ensemble du bloc affiché par le widget, pour vous faciliter sa personnalisation via une feuille de styles CSS.
Utile en particulier pour appliquer les mêmes styles à plusieurs widgets !
Durée de mise en cache
Le widget ne va pas chercher vos derniers favoris sur le site de del.icio.us à chaque affichage de page : il effectue la requête de temps en temps, et stocke les résultats dans un fichier local.
Ce fonctionnement est nécessaire pour ne pas ralentir votre site, et ne pas surcharger le service del.icio.us.
Il est donc fortement recommandé de ne pas désactiver la mise en cache !
Cette option configure la durée pendant laquelle les favoris sont conservés en cache, sans être re-chargés depuis le site de del.icio.us
Si vous ajoutez fréquemment des favoris ou que vous voulez qu'ils apparaissent rapidement sur votre blog, une durée de 30 minutes est adaptée ; elle peut être augmentée si vous n'ajoutez de favoris que rarement, et que le délai d'apparition sur votre blog vous importe peu.
Nom du fichier de cache
Le fichier de cache utilisé par le widget pour mémoriser vos derniers favoris sera stocké dans le répertoire de cache de Dotclear.
Cette option configure le nom du fichier de cache.
Timeout
Dans le cas où le service de del.icio.us est ralenti, pour ne pas ralentir l'affichage de votre site, il est préférable de ne pas attendre la réponse de del.icio.us, quitte à n'afficher aucun favoris.
Cette option configure la durée maximale pendant laquelle le widget attend une réponse du service del.icio.us.
Une durée de deux ou trois secondes est adaptée.
Une durée supérieure à 5 secondes n'est pas recommandée.
Une durée supérieure à 10 secondes est suicidaire : en cas de lenteur du service Delicious, vos pages mettraient plus de 10 secondes à s'afficher !
Afficher les erreurs en commentaire HTML
Cette option est réservée aux utilisateurs expérimentés en développement Web, pouvant comprendre la signification d'un message d'erreur technique.
Si elle est activée, lorsqu'une erreur survient lors de la récupération des derniers favoris, elle sera présentée sous forme de commentaire HTML accessible en consultant le code source de la page.
Pour la petite histoire
J'utilise le service del.icio.us pour stocker mes favoris sur Internet, et pouvoir y accéder ensuite depuis n'importe quel ordinateur (mon fixe, mon portable, mon PC au bureau, ...).
Parmi les adresses que je stocke en favoris, un grand nombre sont susceptibles d'intéresser les visiteurs de mon site - celui-ci.
Plus précisément, les entrées couvertes par un ensemble d'une dizaine de tags sont susceptibles d'intéresser les visiteurs de ce site.
Plutôt que de recopier manuellement les sites nouvellement mis en favoris sur del.icio.us vers une page spécifique de ce site, je préfère un système qui les présente automatiquement ici.
J'ai commencé par utiliser - pendant plusieurs mois - le plugin PhpWidget, qui permet d'insérer du code PHP au sein d'un widget Dotclear2, dans une des barres latérales...
Et il y a quelques semaines, j'ai repris le code que j'utilisais au sein du plugin PhpWidget, pour l'intégrer à un nouveau plugin, totalement indépendant : le plug-in del.icio.us.
Le code de récupération et d'affichage des favoris depuis le service Delicious a donc été testé pendant plusieurs mois.
Et le plug-in del.icio.us pendant plusieurs semaines.
Explications techniques
Techniquement, le widget effectue un appel HTTPS vers l'API del.icio.us, en lui passant
- Votre login,
- Votre mot de passe,
- Et un nombre de favoris récents à charger
Une fois les favoris correspondant obtenus, ils sont filtrés :
- Exclusion des favoris privés,
- Exclusion des favoris portant un tag de la liste interdite,
- Puis seulement, conservation des favoris portant un tag de la liste autorisée.
Les favoris conservés sont ensuite parcourus afin de générer le code HTML à afficher.
Ce code HTML est stocké au sein d'un fichier de cache, et affiché.
Tant que le fichier de cache n'aura pas expiré, il sera directement réutilisé pour affichage, sans effectuer de nouvelle requête vers le service Delicious.
Note : si un appel vers le service Delicious échoue (timeout, par exemple), un fichier de cache vide sera tout de même généré. Le but étant de ne pas ré-effectuer de nouvel appel avant plusieurs minutes, en considérant que, lorsque le service ne répond pas, il continue généralement à ne pas répondre pendant quelques temps.
Cela signifie que, si Delicious est un peu lent pendant quelques minutes, il se peut que le Widget n'affiche rien pendant plusieurs minutes (la durée de vie du cache).
(Si le mode "debug" a été activé dans l'administration, un commentaire HTML sera généré pour signaler le problème, sans afficher d'information directement visible sur votre blog)
En sa version actuelle, le widget peut charger vos favoris depuis le service Delicious de deux manière différentes :
- Si l'extension "curl" est activée, elle est utilisée
- Sinon, si la directive de configuration PHP "allow_url_fopen" est à On et que le wrapper HTTPS est activé, le widget passe par un appel à file_get_contents.
Si aucune de ces deux solutions n'est activée, le widget ne fonctionnera pas (il n'affichera rien ; et si vous avez activé le mode "debug" dans l'administration, un commentaire HTML sera généré signalant le problème).
Retours
Si ce widget vous sert, que vous l'utilisez sur votre blog, n'hésitez pas à me le signaler dans les commentaires, ou même à faire un brin de pub 
Si vous avez des commentaires / remarques / suggestions / rapports de bugs, même chose : n'hésitez pas à m'en faire part !
Pour être averti lors de la publication de nouvelles entrées, n'hésitez pas à vous abonner au flux RSS ou ATOM des articles de mon blog !

Commentaires
J'ai tenté désespérément de faire un trackback sur ce billet, en vain, mais vous m'avez trouvé sans !
Merci donc pour ce widget.
Rien à reprocher, si ce n'est un petit souci lors de la validation XHTML. J'ai résolu le problème en englobant la fonction javascript générée dans
_displayContentFromDelicious()du fichier_public.html(ligne 317) dans une sectionCDATA, mais je tenais à le signaler.Encore merci !
Pas de problème
Je jette de temps en temps un œil sur les referer des visiteurs de ce blog, et quand je vois un site que je ne connais pas, je fais généralement un rapide tour dessus pour voir de quoi ça parle ; c'est comme ça que je vous ai trouvé
Ooops pour le problème de trackback ; ça devrait être corrigé, maintenant. Merci !
Pour le CDATA manquant : je l'ai corrigé sur mon blog, mais je n'ai pas mis à jour le plugin redistribué ; j'ajoute à ma toto-list pour la prochaine version
Bonjour!
Merci pour le plugin
! (et aussi pour les nombreux articles sur php 5.3 : bravo!)
nico_somb
Merci
(J'en suis à au moins trois utilisateurs, plus moi, sans avoir parlé de ce plugin ailleurs qu'ici... Il va vraiment falloir que je me décide à corriger les quelques bugs, à tester sous Dotclear 2.1.x, à sortir une nouvelle version... Et à le publier sur dotaddict ^^ )
@Pascal MARTIN: À quand cette mise à jour ?
(Ce serait super sympathique de me répondre par mail. :))
Bonsoir,
Je viens de packager une nouvelle version, qui incorpore notamment la correction nécessaire pour générer du code XHTML valide (Cf commentaires au-dessus).
Je rédigerai peut-être un post un de ces jours (ou une de ces semaines ^^ ), et en profiterai peut-être pour le publier sur dotaddict, mais, en attendant, si vous voulez tester, c'est disponible ici :
http://blog.pascal-martin.fr/public/plugin-delicious/plugin-delicious-0.5.zip
Pas de grosse modification par rapport à la version d'avant, qui fonctionnait sur un Dotclear 2.0.x ; mais cette version-ci a été testée sur un Dotclear 2.1.5
(Sur ce blog-ci, en particulier ^^ )
Si vous avez des remarques / commentaires / retours / whatever, n'hésitez pas !
Merci Pascal pour cette mise à jour mais le widget ne fonctionne pas chez moi, rien ne s'affiche sur mon blog !
Bonsoir,
Oh
Et si vous activez l'option "Afficher les erreurs en commentaire HTML (debug)", est-ce que cela génére une quelconque information sous forme d'un commentaire HTML dans le source de la page, une fois le cache expiré ?
(Dans l'idéal, si cela indiquait un message d'erreur, ce serait particulièrement utile ^^ )
Merci d'avance !
Aucun...
Ergh, ok
Est-ce que vous utilisiez auparavant la version précédente du plugin ? Est-ce qu'elle fonctionnait ?
(Il ne devrait pas y avoir de différence : entre la 0.4 et la 0.5, je n'ai rien changé au fonctionnement même de l'extension, mais on ne sait jamais... )
Sinon, en fouillant un peu dans le code, je vois quelques cas qui empécheraient l'affichage de tout résultat, sans pour autant entrainer un message d'erreur :
Je suis en train de rajouter quelques vérifications à ces niveaux, pour obtenir des messages d'erreurs, plutôt qu'un grand silence, mais on ne sait jamais : si vous êtes dans un de ces types de cas, il peut être inutile d'attendre une prochaine version ^^
Merci d'avance pour vos recherches !
Et bonne journée !
La version précédente ne marchait pas, c'est pourquoi j'ai demander une mise à jour.
Mes logs sont corrects et j'ai bien défini une liste de tags "autorisés".
Désolé pour le dérangement,
Bonne journée !
Ah, ok pour la version précédente ; d'un côté, ça me rassurerait presque : ce n'est pas un "nouveau problème" introduit par une nouvelle version...
J'ai jeté un coup d'œil sur le
phpinfode votre hébergeur, je ne vois à première vue rien de "choquant"Si vous en avez le temps / envie / courage, pourriez-vous essayer la version 0.5.1, dans laquelle j'ai ajouté quelques traces d'erreur supplémentaires, en activant l'option "Afficher les erreurs en commentaire HTML (debug) ?" dans l'interface d'admin ?
Avec un peu de chance, cela permettra peut-être de déterminer pourquoi cette extension ne fonctionne pas sur votre hébergement...
Merci d'avance !
Désolé de répondre si tard... et pourtant les nouvelles sont bonnes ! Je ne sais pas pourquoi mais la dernière version fonctionne à merveille, c'est super.
J'ai maintenant quelques petites demandes ou questions à formuler:
Il serait génial de voir ces quelques améliorations dans la prochaine version !
En tout cas encore merci pour votre aide et bravo pour cette extension.
Hello !
Ah ben voila une bonne nouvelle !
(J'ai un peu du mal à comprendre pourquoi cela fonctionne, à présent, alors que je n'ai normalement rien changé d'autre que des ajouts de messages... Enfin, tant pis / tant mieux)
"Faire en sorte que les marques pages de toutes les étiquettes s'affichent"
> Les favicons ? (les images affichées à gauche des textes des favoris) Actuellement, cela ne fonctionne que pour les sites sur lesquels le favicon est placé à la racine, et s'appelle favicon.ico -- c'est souvent le cas... Mais les navigateurs récents/modernes acceptent qu'ils soit mis n'importe où, tant que le nom est précisé dans la page...
> Malheureusement, le mécanisme existant dans le plugin ne gère que le premier cas (le second est plus difficile à mettre en place : il faudrait aller télécharger le favicon, le stocker en local, ...)
> Peut-être dans une certaine version ; mais pas tout de suite ^^
Cacher le mot de passe
> Probablement que si... Mais le système de widgets de Dotclear ne le permet pas
> Il faudrait passer par une page de configuration distincte du widget... ça rejoint le point suivant ^^
Paramètres sur une autre page, du moins pour les options "avancées"
> Je suis globalement d'accord... Peut-être dans une prochaine version... A suivre %)
Merci pour ces retours, en tout cas !
ça ne semble pas fonctionner chez moi non plus, je n'arrive même pas à avoir les erreurs en commentaire. J'ai installé la 0.5.1 sur mon DotClear, je l'ai ajouté à mon bandeau d'extra, et rien...
Il semble que ça se soit mis à marcher tout seul... bon, ok.