Dotclear2 et les gravatars
Par NiKo le jeudi 21 septembre 2006, 15:07 - Lien permanent -
15 commentaires -
Tags :
Voici une astuce pour gérer les gravatars dans les commentaires de votre blog Dotclear2. Dans le répertoire de votre thème courant, créez un fichier _public.php et ajoutez-y ces quelques lignes de code [1] :
<?php
$core->tpl->addValue('gravatar', array('gravatar', 'tplGravatar'));
class gravatar {
public static function tplGravatar($attr)
{
return '<?php echo md5(strtolower($_ctx->comments->getEmail(false))); ?>';
}
}
?>
Maintenant, dans votre fichier de template pour les billets (généralement, il s'agit de post.html), vous pouvez appeller votre image de gravatar de cette façon entre les balises <tpl:Comments> et </tpl:Comments> :
<img src="http://www.gravatar.com/avatar.php?gravatar_id={{tpl:gravatar}}"
class="gravatar_img" alt="Gravatar Image" />
Voila, c'est codé en 5 minutes et vous aurez constaté que je ne génère pas directement l'url complète du gravatar et encore moins la syntaxe HTML de la balise image depuis la classe PHP, c'est tout simplement car :
- J'en ai la flemme,
- Je préfère gérer ça dans le template.
Hope it helps anyway 
Edit du 22 septembre 2006
Bon, voila finalement une version un poil plus customizable. Le code qui suit annule et remplace le précedent dans votre fichier _public.php :
<?php
$core->tpl->addValue('gravatar', array('gravatar', 'tplGravatar'));
class gravatar {
const
URLBASE = 'http://www.gravatar.com/avatar.php?gravatar_id=%s&default=%s&size=%d',
HTMLTAG = '<img src="%s" class="%s" alt="%s" />',
DEFAULT_SIZE = '40',
DEFAULT_CLASS = 'gravatar_img',
DEFAULT_ALT = 'Gravatar de %s';
public static function tplGravatar($attr)
{
$md5mail = '\'.md5(strtolower($_ctx->comments->getEmail(false))).\'';
$size = array_key_exists('size', $attr) ? $attr['size'] : self::DEFAULT_SIZE;
$class = array_key_exists('class', $attr) ? $attr['class'] : self::DEFAULT_CLASS;
$alttxt = array_key_exists('alt', $attr) ? $attr['alt'] : self::DEFAULT_ALT;
$altimg = array_key_exists('altimg', $attr) ? $attr['altimg'] : '';
$gurl = sprintf(self::URLBASE,
$md5mail, urlencode($altimg), $size);
$gtag = sprintf(self::HTMLTAG,
$gurl, $class, eregi("%s", $alttxt) ?
sprintf($alttxt, '\'.$_ctx->comments->comment_author.\'') : $alttxt);
return '<?php echo \'' . $gtag . '\'; ?>';
}
}
?>
Du côté de votre template post.html et toujours entre vos deux balises <tpl:Comments> et </tpl:Comments>, voila comment ça se passe :
{{tpl:gravatar class="gravatar_img" size="80" altimg="http://www.example.host/default_gravatar.png" alt="Gravatar de %s"}}
Je crois que les attributs sont assez parlants, mais en voici le détail au cas où :
class: le nom de la classe CSS à appliquer à l'imagesize: la taille en pixelsalt: Le contenu du texte alternatif à l'image (acepte la syntaxe de sprintf)altimg: L'url de l'image par defaut en l'absence de gravatar (sera url encodée automatiquement)
Enjoy.
Finalement, voila le plugin 
Bon, je suis incorrigible mais l'occasion était trop belle pour commencer à mettre le nez dans le nouveau système de plugins de Dotclear2 ; voici donc le plugin Gravatars [2] :
- Gravatars pour Dotclear2 v1.0 - Installeur
- Gravatars pour Dotclear2 v1.0 - Archive tar.gz
- Gravatars pour Dotclear2 v1.0 - Archive Zip
Bien évidemment, pour une toute première version, il doit exister quelques bugs et limitations :
- Pas de traduction française
- Pas d'aide contextuelle
- Pas de configuration par blog (à venir)
- Utilisation d'un archaïque fichier INI (pas compris comment mettre les settings en base)
Au chapitre des fonctionnalités :
- Possibilité de définir les paramètres des gravatars de façon globale...
- ou individuellement au niveau du template d'appel (voir plus haut)
Edit du 25 août 2007 : Grâce à Goulven, vous avez droit à la version patchée compatible Dotclear2b7 du plugin :
- Gravatars pour Dotclear2 v1.0.1 - Installeur
- Gravatars pour Dotclear2 v1.0.1 - Archive tar.gz
- Gravatars pour Dotclear2 v1.0.1 - Archive Zip
Notes
[1] Prochaine étape : gérer la coloration syntaxique du code dans Dotclear2.
[2] Packagé grâce au plugin Pack it! d'Elaboration.be
15 commentaires (Ajouter un commentaire)
J'sais pas pourquoi, ça marche une fois sur deux chez moi, alors que sur ton site ça marche très bien là. Je réessaierai plus tard...
Merci pour l'astuce en tout cas NiKo :-)) !
Merci pour le début, mais du coup mes connaissances ne me laissent pas imaginer la suite, pour notemment gérer l'image par défaut (et la taille été gérée avant dans le plugin, mais là je suppose qu'une règle css et c'est réglé). En tout cas je suis cette migration avec d'autant plus d'intérêts puisque ça ne me dit rien de retourner vers DC1 ! Bonne continuation.
Silvyn! > Pour la taille par défaut et d'autre option, c'est du côté de l'url de l'image que cela se passe. Par exemple le code de l'image de ton gravatar ci-dessus :
Salut ! Merci pour ce truc, dès que je bascule sur DC2, j'ajoute les gravatars... en attendant, crois tu que ce soit compatible sur DC1 ??
Bonne journée
Guillaume> Pour Dotclear1 tu trouveras un plugin déjà existant : dcGravatars
Cool merci Niko, car comme il est écrit sur 1loup.net, le plugin n'est plus sur le wiki de dotclear et je n'arrivais pas à le trouver.
:-)
Tiens ! comme par hasard !
L'idée d'une fonction gravatar pr DC2 me trottait dans la tête, je me suis exactement dit : Je vais aller voir le blog de Niko, il a peut être quelque chose à proposer ! Et Bingo ..
En plus tu mets à disposition un plugin tout prêt ..
Première constation sur ton blog : Ca fonctionne et heureusement, parcontre le temps de téléchargement des gravatars semblent plus élévés que sur DC1. Peut être qu'une impression
Enfin, Merci !
Si j'ai bien suivi : j'installe le plugin, je rentre l'url de mon gravatar dans les options ET je mets à jour le template ?
Franck> Il faut installer le plugin, puis tu as deux options :
- Rentrer les paramètres spécifiques à la présentation des gravatars de façon générique depuis le formulaire ad-hoc dans l'espace d'administration
- Dans tes templates appeller directement tes gravatars et passer à la balise tes paramètres de mise en forme (voir plus haut)
Bien évidemment, une documentation complète et internationnalisée suivra bientôt !yeah ça sera pratique pour des gens que je connais.
les Gavatar sont utilisé que par Dotclear ? Oô
StyleLotußien > non, c'est un système universel :). Par contre ce plugin est fait pour intégrer sympatiquement les gravatars dans un blog DotClear.
Bien sympatique ce plugin! Cependant j'ai un soucil de temps de réponse et certains avatars ne s'afichent pas... Sinon pour la hauteur automatique des commentaires c'est bien:
width: auto; overflow: auto;
dans les css sur la balise #comments blockquote.main pre { ??
Adrian> Pour les temps de réponse, c'est du côté de l'architecture réseau de Gravatar.com qu'il faut te retrourner
Sinon, qu'appelles-tu la "hauteur automatique" des commentaires ? Si c'est pour faire en sorte que les images ne débordent pas, personnellement j'ai placé un
<div style="clear:both"></div>après la balise<img/>qui fonctionne plutôt bien.Dans l'admin de DC2, avec les dernières SVN, j'ai un beau :
Fatal error: Call to undefined method dcPage::jsmultipartpage() in /home/web/unelectronlibre.info/www/plugins/gravatars/index.php on line 39
Tssss