Rajouter sur la page l'avatar du membre connecté
Ce code permet d'ajouter l'avatar du membre où on le souhaite sur une page du forum.
Exemple d'utilisation :
- Ajouter l'avatar du membre à côté de la réponse rapide
Note : il y a des tas de manière de faire, ce tutoriel n'est qu'un exemple
Pour faciliter le tutoriel, j'utilise jQuery qui est mis par défaut sur les forumactifs et qui va nous faciliter le code.
Utilisation
Partout où vous voulez mettre l'avatar de l'utilisateur, il suffit de rajouter la classe ".js-useravatar" à votre conteneur. La balise image avec l'avatar sera rajoutée ensuite en javascript à l'intérieur de votre élément.
Je dois donc par exemple mettre le code :
- Code:
<div class="js-useravatar"></div>
Et le contenu de la div sera remplacé par l'image à l'intérieur de ma div.
Je peux aussi utiliser une balise span, une balise p, etc... Il faut juste que cela ne soit pas une balise orpheline (une balise auto-fermante, comme par exemple br, img, input etc).
Il est possible de mettre un contenu par défaut, qui sera ensuite remplacé par l'image de l'avatar, ou qui s'affichera si le javascript ne fonctionne pas. Par exemple :
- Code:
<div class="js-useravatar">Contenu temporaire</div>
Styliser
Comment styliser l'image de l'avatar ?
Je vous conseille de rajouter une classe supplémentaire à votre balise.
Ainsi par exemple si mon avatar se trouvera dans un panneau coulissant sur le côté, je peux mettre une seconde classe comme ceci :
- Code:
<div class="js-useravatar panneau_avatar"></div>
Et ensuite je met mon CSS comme ceci :
- Code:
.panneau_avatar {
/* style du bloc autour de l.image*/
}
.panneau_avatar img {
/* style de l.image */
}
Pourquoi mettre une seconde classe, et ne pas styliser directement .js-useravatar ?
→ A priori, vous allez peut-être utiliser cet ajout de l'avatar à plusieurs endroits sur le forum. Si vous stylisez directement .js-useravatar, vous risquez de vous retrouver avec le même style à plusieurs endroits.
En rajoutant une seconde classe, vous êtes sûrs de bien séparer d'un côté le style (avec la classe supplémentaire ajoutée) et le javascript qui ajoute l'avatar (avec la classe .js-useravatar).
→ A priori, vous allez peut-être utiliser cet ajout de l'avatar à plusieurs endroits sur le forum. Si vous stylisez directement .js-useravatar, vous risquez de vous retrouver avec le même style à plusieurs endroits.
En rajoutant une seconde classe, vous êtes sûrs de bien séparer d'un côté le style (avec la classe supplémentaire ajoutée) et le javascript qui ajoute l'avatar (avec la classe .js-useravatar).
Javascript
Le JS, on le met dans PA > Modules > Gestion des codes Javascript.
Ensuite, on rajoute un nouveau script qu'on peut appeler par exemple "Ajouter avatar du membre", qu'on active sur les pages où on en a besoin :)
Code :
- Code:
/* On attend le chargement */
$(function(){
/* on récupère les endroits où on doit ajouter l'avatar */
var $loadAvatar = $('.js-useravatar');
/* s'il y a des endroits où on doit ajouter l'avatar */
if ($loadAvatar.length > 0) {
/* on remplace le contenu de .js-useravatar en mettant l'avatar */
$loadAvatar.html(_userdata.avatar);
}
});
Fonctionnement
Avant d'écrire le javascript, on va d'abord se demander "qu'est ce que je veux faire" ? On ne se jette pas d'un coup sur le code sans réfléchir :)
Je veux remplacer l'avatar de l'utilisateur à l'intérieur des éléments avec la classe js-useravatar.
A partir de cela, je vais me poser quelques questions :
- Comment sélectionner les éléments avec la class js-useravatar ?
En jQuery, on va mettre ceci, à l'intérieur de $(' '), je met mon sélecteur, ça fonctionne comme le CSS.
En CSS mon sélecteur est .js-useravatar, je fais donc
- Code:
$('.js-useravatar');
- Comment je fais pour obtenir l'avatar de l'utilisateur ?
Forumactif nous met gentiment à disposition une liste d'informations ♥. Il s'agit d'un objet javascript _userdata, qui contient diverses informations sur l'utilisateur sur le site. A ma connaissance, il n'y a pas de sujet officiel de ForumActif qui les recense. Pour en savoir plus, vous pouvez lire ce sujet
Celle qui nous intéresse est celle de l'avatar. Pour y accéder, il nous suffit d'écrire _userdata.avatar. Elle contient un code HTML avec l'image du membre.
Exemple du HTML qu'elle peut contenir :
- Code:
<img src="http://r26.imgfast.net/users/2613/44/65/70/avatars/1-23.jpg" alt="" />
Si l'utilisateur est déconnecté ou bien qu'il n'a pas d'avatar, la valeur par défaut sera :
- Code:
<img src="http://2img.net/i/fa/invision/pp-blank-thumb.png" alt="" />
Vous pouvez personnaliser ces avatars par défaut via le panneau d'administration.
PA > Affichage > Avatars > Gestion des avatars > Administration de vos avatars
On peut ainsi définir un avatar par défaut ainsi qu'un avatar pour les invités.
Si le membre est déconnecté et que vous n'avez pas défini d'avatar pour les invités, c'est l'avatar par défaut qui d'affichera. Sinon, cela sera l’avatar pour les invités :)
PA > Affichage > Avatars > Gestion des avatars > Administration de vos avatars
On peut ainsi définir un avatar par défaut ainsi qu'un avatar pour les invités.
Si le membre est déconnecté et que vous n'avez pas défini d'avatar pour les invités, c'est l'avatar par défaut qui d'affichera. Sinon, cela sera l’avatar pour les invités :)
- Une fois que j'ai ces 2 informations... Comment je fais pour rajouter mon avatar à l'intérieur de .js-useravatar ?
On va utiliser une petite méthode de jQuery qui permet de remplacer le contenu d'un élément. Par exemple :
- Code:
$('.js-useravatar').html("coucou");
Code Javascript, un peu plus en détail
On peut voir que tout le contenu de notre code se trouve à l'intérieur de ceci :
- Code:
$(function(){
/* code à l'intérieur */
});
Avec ce code, on attend que le DOM (la structure de la page) soit chargé, comme ça on peut faire nos modifications, nos sélections, sans problème.
- Précision:
- Il s'agit d'un équivalent de ce code là que vous verrez aussi parfois.
- Code:
$(document).ready(function() {
/* code à l'intérieur */
});
- Code:
var $loadAvatar = $('.js-useravatar');
- Code:
if ($loadAvatar.length > 0) {
/* code à l'intérieur */
}
$loadAvatar.length va me donner le nombre d'éléments sélectionnés. Je regarde donc s'il y a plus de 0 (donc au minimum 1) élément sélectionné.
Cela signifie "s'il y a un élément dans $loadAvatar, fait ..."
Et enfin, la dernière ligne :
- Code:
$loadAvatar.html(_userdata.avatar);
Tout le contenu à l'intérieur de chaque $loadAvatar sera remplacé par notre image de profil.
En cas de problème, n'hésitez pas à poster dans la section Problème avec mon code.
Dernière édition par Nihil Scar Winspeare le Ven 3 Mar 2017 - 14:37, édité 5 fois