gravatar.gif

Sur le blog de Saesee j'ai appris que sur Dotclear on pouvais avoir un avatar par défaut lorsqu'on laisse un commentaire.

Il suffit de s'inscrire sur Gravatar et le tour est joué,
Sur tout les blogs,sites ou forums ou est installée l'optionon est reconnus d'après l'adresse email et notre avatar s'affiche automatiquement.

Deux plugins sont disponibles pour dotclear:

celui de Julien Appert basique et très simple a configurer (mon choix)
celui de JcDenis un peut plus complet et parametrable.

Cela m'a donné l'idée de faire ça pour smf. J'ai eux un peut la flemme de faire le mod, alors je vous laisse juste un petit tuto.
Vous allez voir c'est facile a mettre en place.

En permier on va faire une sauvergarde des fichier suivants:

Sources/Load.php
Themes/default/Profile.template.php
Themes/default/Display.template.php
Themes/default/PersonalMessage.template.php
Themes/default/index.template.php

default doit être remplacé par le thème que vous utilisez si vous n'utilsez pas ce très beau thème ;)
Ne soyez pas surpris si votre thème ne contient pas tout les fichiers, c'est normal c'est qu'il n'en a pas besoin.

Maintenant la modification en elle même.
On va d'abord créer une fonction qui nous évitera de coller du texte inutile un peut partout.

On édite le fichier Load.php
On va tout au fond du fichier et juste avant

?>


on colle le code suivant:

function Gravatar($email)
{
global $settings;
  echo('<img src="http://www.gravatar.com/avatar.php?gravatar_id='.md5( strtolower($email) ).'&default='.urlencode($settings['default_theme_url'].'/images/user.png').'&size=90 "/>');
}

Petite explication:
C'est ce bout de code qui va aller chercher les infos chez Gravatar.
La variable $email est là parsque dans les différents fichiers que l'on va éditer les variables ne sont pas les même pour appeler l'adresse email du membre.
Ici on va aussi chercher l'image par défaut pour les membres qui n'ont pas d'avatar, autant faire d'une pierre deux coup :)
On peut ici choisir la taille de l'avatar en modifiant l'option size=90

Maintenant on va s'attaquer a l'affichage.

1-Pour l'affichage dans le profil:

On édite le fichier Profile.template.php et on rechercher vers la ligne 299

//Now print the second column where the members avatar/text is shown.
	echo '
		<td class="windowbg" valign="middle" align="center" width="150">
			', $context['member']['avatar']['image'], '<br /><br />
			', $context['member']['blurb'], '
		</td>
	</tr>';

et ont le remplace par

// Now print the second column where the members avatar/text is shown.
	echo '
		<td class="windowbg" valign="middle" align="center" width="150">
			', !empty($context['member']['avatar']['image']) ? $context['member']['avatar']['image']: Gravatar($context['member']['email']), '<br /><br />
			', $context['member']['blurb'], '
		</td>
	</tr>';


2- L'affichage dans les messages

On édite le fichier Display.template.php et on rechercher vers la ligne 321

// Show avatars, images, etc.?
			if (!empty($settings['show_user_images']) && empty($options['show_no_avatars']) && !empty($message['member']['avatar']['image']))
				echo '
								<div style="overflow: auto; width: 100%;">', $message['member']['avatar']['image'], '</div><br />';

et on remplace par:

// Show avatars, images, etc.?
			if (!empty($settings['show_user_images']) && empty($options['show_no_avatars']))
				echo '
								<div style="overflow: auto; width: 100%;">',!empty($message['member']['avatar']['image']) ? $message['member']['avatar']['image']: Gravatar($message['member']['email']), '</div><br />';


3- L'affichage dans les messages privés

On édite le fichier PersonalMessage.template.php et on rechercher vers la ligne 315

// Show avatars, images, etc.?
				if (!empty($settings['show_user_images']) && empty($options['show_no_avatars']))
					echo '
									', $message['member']['avatar']['image'], '<br />';

et on remplace par:

// Show avatars, images, etc.?
				if (!empty($settings['show_user_images']) && empty($options['show_no_avatars']))
					echo '
									',!empty($message['member']['avatar']['image']) ? $message['member']['avatar']['image']: Gravatar($message['member']['email']), '<br />';


4-Et enfin l'affichage sur l'index:

On édite le fichier index.template.php et on rechercher vers la ligne 224

if (!empty($context['user']['avatar']))
		echo '
							<td class="windowbg" valign="middle">', $context['user']['avatar']['image'], '</td>';

et on ajoute après:

else
		echo '	
							<td class="windowbg" valign="middle">',Gravatar($context['user']['email']),'</td>';

Et puisque que l'on tien le fichier index.template,php on peut ajouter un petit texte pour avertir les membres de cette petit plus sur notre forum,

on recherche vers la ligne 256

// Show the total time logged in?
		if (!empty($context['user']['total_time_logged_in']))

et on ajoute avant:

echo 'Ce forum utilise <a href="http://fr.gravatar.com/">Gravatar</a> pour gérer vos avatars.<br />';

A embellir selon votre inspiration .

Voilà le plus gros est fait, Alors ? c'etait pas compliqué si ? :)
Il ne vous reste plus qu'a télécharger l'image suivante et de la placer dans le dossier images du thème par défaut (core) et le tour est joué.
user.png

Oui, oui le theme par défaut, puisque

$settings['default_theme_url'].'/images/

indique le chemin vers le repertoire images de celui-ci.
Cela nous évite d'aller copier l'image dans tout les thèmes si on en utilise plusieur.(ce que c'est beau la simplicité ;) )

Bien évidement tout ceci peut être amélioré à volonté.
On peut même créer un mod qui permettrais de choisir si l'on veut ou pas activer le mod, paramétrer la taille, etc...
C'est installé sur le forum allez jetez un oeil avant de vous lancer ;)

Vous pouvez faire de ce ce tuto ce que bon vous semble a condition que cela reste gratuit et que vous n'hésitiez pas à citer la source.

Encore merci à Saesee de qui est venue l'inspiration.