hAvatar

hAvatar est un plugin qui sait retrouver automatiquement sur leur page personnelle l’avatar des auteurs SPIP ou des personnes qui laissent des messages de forum. Il est basé sur le système des microformats, plus précisément des hcards.

Les microformats

Lorsqu’on écrit du code HTML, les microformats sont une nomenclature de nommage pour les classes de vos éléments. Ce nommage standardisé permet de signaler de façon formelle le type de certaines informations contenues dans vos pages, afin que cette information puisse être extraite automatiquement et mise à profit. Les microformats sont donc un élément de construction du web sémantique.

Une des facettes les plus répandues des microformats est hcard. Cette norme permet de spécifier particulièrement des informations de contact pour des personnes ou des organismes. Par exemple :

<div class="vcard">
<h1 class="fn">Toto Dupont</h1>
<img class="photo" src="toto.jpg"/>
<p>Vous pouvez aller sur <a href="http://toto.com/" class="url">mon site web</a>.</p>
</div>

Dans cet exemple, les classes vcard, fn, photo et url correspondent à des noms standards définis dans la spécification hcard, qui vont permettre à certains outils d’extraire et interpréter les informations correspondantes. Le plugin hAvatar est l’un de ces outils.

Fonctionnement du plugin

Lorsqu’un auteur, que ce soit dans son profil SPIP ou dans un message de forum, indique une URL pour son site web, le plugin va la visiter et y chercher la ou les hcards présentes, puis les parcourir l’une après l’autre jusqu’à en trouver une qui fournisse une photo.

Concrètement, le résultat est un peu magique : le site SPIP affiche l’avatar ou la photo d’une personne en se basant uniquement sur l’URL qu’elle vient de donner ou qu’elle a configurée dans son profil. De plus, cette URL peut être actualisée par la personne après coup, et le site SPIP prendra en compte les changements.

Ce plugin a un fonctionnement identique au plugin Gravatar, tant dans sa finalité (récupérer de façon automatisée l’image d’un auteur) que dans son mode de fonctionnement et les outils qu’il fournit. Il met notamment en cache pour un petit moment l’image récupérée, afin de ne pas devoir visiter la page de l’auteur à chaque affichage.

Comment dois-je modifier mon site pour que ma photo soit reconnue ?

La réponse courte est sur le site des microformats. Une autre formulation :
-  Il doit y avoir un élément de class="vcard" autour de l’info d’identité qui apparaît très certainement sur votre site.
-  Dans ce bloc, il doit y avoir votre nom quelque part, avec class="fn" (formatted name, nom mis en forme... votre nom entier quoi)
-  Dans le même bloc, il doit y avoir aussi votre photo, avec class="photo"

Le code montré plus haut est un bon exemple.

Affichage dans l’espace privé

À l’instar de Gravatar, le plugin affiche un second bloc d’image sous le logo standard de l’auteur, avec le titre « hAvatar de l’auteur ».

Utilisation en tant que webmestre

Le plugin propose plusieurs méthodes pour afficher des avatars :


-  La balise #LOGO_AUTEUR

C’est la méthode privilégiée pour utiliser le plugin hAvatar dans le code des squelettes. Le plugin étend la balise #LOGO_AUTEUR afin que celle-ci renvoie l’avatar associé à la carte de visite de l’auteur sur son propre site, si l’auteur n’a pas déjà un logo dans SPIP.

Mieux, vous pouvez utiliser la balise #LOGO_AUTEUR dans les forums et pétitions. Elle utilisera alors les informations de l’auteur si elles sont connues, et à défaut l’image prise à l’URL de son site si celui-ci a été renseigné.

#LOGO_AUTEUR n’affiche rien par défaut si il n’y a d’image ni sur le site de la personne, ni sur le site SPIP.

Vous pouvez ainsi substituer votre image par défaut en écrivant dans votre squelette

[(#LOGO_AUTEUR||sinon{#CHEMIN{havatar.png}})]


-  La balise #HAVATAR

Cette balise renvoie uniquement l’image de la carte de visite récupérée sur l’URL fournie en argument. Elle permet donc d’ignorer l’existence d’un logo et de toujours forcer l’image prise sur le site de la personne, au détriment du logo de l’auteur SPIP. Cette balise possède trois arguments :

  • l’adresse du site
  • la taille de l’image à afficher (facultatif, 80 pixels par défaut)
  • l’image par défaut si aucune vignette n’est récupérée (facultatif)


-  Le modèle #MODELE{havatar}

Le modèle #MODELE{havatar} fonctionne comme la balise #LOGO_AUTEUR ci-dessus, et la complète, en affichant le logo de l’auteur s’il est présent, sinon l’image récupérée sur le site de l’auteur, sinon un avatar par défaut (havatar.png), en vignette carrée de 60 pixels de côté. Ce modèle est également microformaté pour pouvoir composer, à son tour, une hCard personnelle.

Ce modèle peut être utilisé à la fois à l’intérieur et à l’extérieur d’une boucle AUTEURS. Par exemple, dans les commentaires, pour afficher la trombine de chaque personne ayant laissé un commentaire, qu’elle soit identifiée dans SPIP ou inconnue, on emploiera le modèle ainsi :

[(#MODELE{havatar}{email=#URL_SITE})]

L’avantage du modèle est d’abord qu’il affiche toujours quelque chose, de façon formatée et donc homogène, mais aussi qu’il facilite une ré-utilisation des avatars en plusieurs endroits du site (trombinoscope, profil, hCard, commentaires, informations de session, etc.). Il est alors possible de réduire la vignette au cas par cas, en spécifiant la dimension voulue via le filtre |image_reduire{32}.


-  Le filtre |havatar

Ce filtre retourne le chemin complet (pris dans le cache local) de l’image tirée du site fourni en argument.

Exemple d’utilisation, l’adresse courriel peut être issue d’une boucle ou pas :

<BOUCLE_havatar(AUTEURS)>
    <img src="[(#URL_SITE|havatar)]" alt="[(#NOM)]"[ title="(#NOM)"] />
</BOUCLE_havatar>

ou

<img src="[(#VAL{http://toto.com/}|havatar)]" alt="Toto" title="Toto"] />

Comparaison entre les hcard et Gravatar.com

Les deux systèmes demandent aussi peu d’efforts l’un que l’autre, que ce soit pour chaque article rédigé, pour chaque commentaire écrit, ou en tant que webmestre du site SPIP. En revanche, les deux approches diffèrent du point de vue architecturel.

-  L’approche de Gravatar.com, bien que pratique, a pour gros défaut d’être entièrement centralisée, ce qui implique qu’en cas de panne temporaire ou de fermeture définitive du site, plus personne n’a d’avatar nulle part. Par ailleurs, l’entreprise responsable du « service » Gravatar.com possède maintenant une quantité de données faramineuse. Outre un nombre démentiel d’adresses mail, ces données incluent également, entre autres, les fréquences de visite de chacune des pages sur lesquels une image Gravatar est présente, par le biais des referrers. Le système de cache mis en place par certains systèmes utilisant Gravatar.com, dont le plugin Gravatar, permet certes de réduire ces deux effets, mais pas de les supprimer, ni de se débarrasser de cette architecture centralisée.

-  L’approche des hcards en revanche, et des microformats en général, suit le leitmotiv d’Internet (qui est aussi la raison de sa pérennité et de sa neutralité) : la décentralisation des données. En effet, chaque auteur est maître et responsable des données diffusées sur son site. Aucun risque de panne généralisée, donc, et aucune concentration de données à un seul endroit d’Internet.

Bibliothèque de fonctions utilisée

Sur le plan technique, ce plugin utilise la petite bibliothèque PHP hKit pour récupérer les données hcard sur la page considérée.

Discussion

4 discussions

  • Aïe, aïe...
    En arrivant sur la page d’un visiteur depuis l’espace privé, j’ai trois fois

    Warning : simplexml_load_string() [function.simplexml-load-string] : Entity : line 1 : parser error : Start tag expected, ’<’ not found in ...../plugins/auto/havatar/inc/hkit.class.php on line 345

    puis, pour finir :

    Fatal error : Call to a member function asXML() on a non-object in ...../plugins/auto/havatar/inc/hkit.class.php on line 359

    Répondre à ce message

  • 2

    Juste un grand merci pour cette contrib.

    Tout à fait daccord sur le constat que gravatar n’à pas de norme ouverte. SI je pouvais instaler mon gravatar sur mon site, ca se saurait non ?

    • Je ne comprends pas la dernière phrase de ton message. Peux-tu préciser ?

    • Je disais jsuet que je ne peut pas installer gravatar sur mon site (passage obligé par le site de gravatar), tandis que avec le format vcard , si ;)

    Répondre à ce message

  • 4

    Comment faire si l’URL indiquée comporte des messages de forum, par exemple, avec des hCard pour chaque intervenant ?

    • hAvatar va chercher la première hcard avec photo qu’il trouve.

      Mais ça serait effectivement super si la spécification hcard permettait d’indiquer qu’une vcard désigne (ou ne désigne pas) l’entité concernée par la page. Je n’ai rien vu passer de tel dans la spec, mais si ça existe je modifierai hAvatar pour en tenir compte.

    • en même temps, les spécifications ne garantissent pas que l’image que tu prends est bien la bonne :-/

      je pense qu’il ne faut pas rechercher les photos de toutes les hcard du site, mais seulement ceux qui déclarent le même site... mieux, quand le mail correspond, c’est ce hcard qu’on prend même s’il n’y a pas de logo/avatar

    • en même temps, les spécifications ne garantissent pas que l’image que tu prends est bien la bonne

      Dans ce cas rien ne le garantit jamais, mais suivre une convention à un bout permet à ceux qui la suivent à l’autre bout de ne pas avoir de surprise. De toute façon la convention en question n’existe pas, donc peu importe. :)

      je pense qu’il ne faut pas rechercher les photos de toutes les hcard du site, mais seulement ceux qui déclarent le même site... mieux, quand le mail correspond, c’est ce hcard qu’on prend même s’il n’y a pas de logo/avatar

      Oui c’est une bonne idée. Il faut cependant garder en tête que :
      -  On ne mentionne pas toujours son URL dans sa hcard, et surtout si on est déjà sur la page en question.
      -  On ne veut parfois pas donner son mail en clair sur sa page perso, pour éviter le spam.

      Du coup, je vais voir à implémenter ton idée, tout en utilisant la première image si aucune correspondance d’URL ou de mail n’est trouvée.

    • Du coup, je vais voir à implémenter ton idée, tout en utilisant la première image si aucune correspondance d’URL ou de mail n’est trouvée.

      C’est tout à fait ce que je suggère : prendre la première photo présente ne doit se faire qu’en dernier recours... et ce ne sera pas faute d’avoir essayé...
      Si on veut aller plus loin, là où le truc sûr pour l’informatique (email puis url —parce-que ce dernier peut pointer sur l’entreprise et non le blog ou la page perso quand il s’agit d’une carte professionnelle ; j’ai vu le cas sur le site d’IBM—), on peut faire comme ferait un humain : chercher la correspondance de nom... (mais cela suppose que le même pseudo est utilisé pour laisser un commentaire et c’est pas gagné)

    Répondre à ce message

  • hAvatar va chercher la première hcard avec photo qu’il trouve.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom