Chez ZeGuigui

Le blog d'un geek chasseur de licornes au clair de lune

Chez ZeGuigui
Technique

Un plugin Movable Type pour identifier un auteur de commentaire

Vous aurez peut-être remarqué que les commentaires que je poste sur mon blog apparaissent dans une autre couleur. Si vous vous demandez comment j’ai fait ça sous movable-type et bien c’est grâce à un plugin maison.

Le but de ce plugin est de permettre d’identifier un auteur de commentaire à partir de son adresse email. A quoi ça sert ? Par exemple à ajouter une classe dans le code HTML afin de changer la couleur et ainsi reconnaître un auteur du blog.

Ce plugin est en fait ma première réalisation technique pour Movable Type. Jusqu’à présent j’avais surtout bidouillé les modèles mais je n’avais pas trouvé de solution miracle pour changer la couleur de mes commentaires, sauf à passer par un intermédiaire PHP (ce qui est réaliste pour mon site puisqu’il utilise PHP).

Ce plugin ajoute une nouvelle balise conditionnelle <MTIfCommenterEmailIs> qui accepte deux paramètres : email et trusted. email est un paramètre obligatoire qui correspond à l’adresse email à reconnaître. Si trusted="1" alors non seulement l’adresse email doit correspondre mais en plus le commentaire doit avoir été posté dans un mode authentifié (typekey par exemple). On peut bien entendu utilisé la balise <MTElse> dans sa page pour ajouter du code en cas de commentaire non reconnu.

package MT::Plugin::ZeGuigui;
use strict;
use warnings;
use vars qw( $VERSION );
$VERSION = 1.0;
eval { use MT::Plugin };
unless ($@) {
my $static_path = MT::ConfigMgr->instance->StaticWebPath;
my $about = {
key         => __PACKAGE__,
name        => 'mt-zeguigui',
description => 'Small plugins by ZeGuigui',
author_name => 'ZeGuigui',
author_link => 'https://www.zeguigui.com/',
plugin_link => 'https://www.zeguigui.com/technique.php',
version     => $VERSION
};
MT->add_plugin(MT::Plugin->new($about));
}
MT::Template::Context->add_conditional_tag("IfCommenterEmailIs" => \&checkCommenterEmail);
sub checkCommenterEmail {
my ($ctx, $args) = @_;
# Check context
my $comment = $ctx->stash('comment')
or return $ctx->error("Tag called without a comment in context");
# Check arguments
if (! $args->{email}) {
return $ctx->error("An 'email' argument must be provided");
}
my $email   = $args->{email};
my $trusted = $args->{trusted};
return (($email eq $comment->email) && ($trusted ? $comment->commenter_id : 1));
}
1;

Comme on peut le voir rien de bien extraordinaire dans le code source… sauf peut-être l’utilisation de commenter_id de l’objet $comment qui n’est pas documenté sur le site de SixApart. Probablement un oubli mais en lisant le source de Movable Type on trouve rapidement l’existence de ce paramètre qui simplifie grandement la reconnaissance d’un commentaire authentifié !

Et maintenant pour nos amis anglophones une description nettement plus succinte et rapide de ce plugin.

This plugin adds a new MovableType conditionnal tag named MTIfCommenterEmailIs. It accepts two arguments: email (mandatory) and trusted. The aim is to recognise a commenter by its email address. If trusted is set to 1 then the comment must also be from an authentified source (typekey for example). You can use MTElse to add some code when the comment is not from the expected source.

En pratique voici comment vous pouvez utiliser ce tag (small example) :

<MTComments>
<MTIfCommenterEmailIs email="authoremail@someisp.com" trusted="1">
<div class="comment blogauthor" id="comment-<$MTCommentID$>">
<MTElse>
<div class="comment" id="comment-<$MTCommentID$>">
</MTElse>
</MTIfCommenterEmailIs>
[...]
</MTComments>

Si vous avez des questions, commentaires, améliorations à suggérer, n’hésitez pas à utiliser les commentaires !

10 réflexions sur “Un plugin Movable Type pour identifier un auteur de commentaire

  • :-(( je suis super nulle en informatique mais je suis certaine que c’est très bien. Bisous.

    Répondre
  • Je peux réserver la couleur pantone 282C ???
    😀
    Ou alors un petit framboise, heuh, une petite framboise (!)
    Flûte, ça tourne à l’obsession et ça va finir par se remarquer. Bon bah j’ai rien dit alors :-))

    Répondre
  • D’ailleurs en parlant de framboises j’ai mangé la toute première hier… bon OK il n’y en avait vraiment qu’une et c’était un peu juste. Bref c’était de la gourmandise. On ne se refait pas 😀

    Répondre
  • :-(( en parlant de framboises, les miennes ne sont pas encore mûres… loin de là mais les fraises sont excellentes cette année et les cerises vont bientôt être parfaites. J’en ai mangé quelques unes hier… non Marie j’ai pas trouvé de « bloche » dedans.

    Répondre
  • Kevin Story

    This only works with static templates, not dynamic. The same result can be made with the MTCompare plugin. I can’t seem to find a plugin that works with dynamic tempaltes, I might have to write one myself. Keep up the good work though!

    Répondre
  • Kevin Story

    This is what I came up with using Smart for PHP.
    {{capture assign= »MTCommentEmail »}}<$MTCommentEmail$>{{/capture}}
    {{if $MTCommentEmail == « email@domain.com »}}
    <div class= »comment1″ id= »comment-<$MTCommentID$> »>
    {{/if}}
    {{if $MTCommentEmail != « email@domain.com »}}
    <div class= »comment » id= »comment-<$MTCommentID$> »>
    {{/if}}

    Répondre
  • Using Smarty (default dynamic template system for movable type) you can use {else} the same way you would use for static templates.

    Répondre

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.