La tambouille des râleuses
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Cdiscount : -30€ dès 300€ ...
Voir le deal

Aller en bas
Miettes
Miettes
Râleuse (Admin)
Informations :
► Présente en semaine (09h00 - 18h00)
----
Idea Viens papoter avec nous sur le discord
Pseudo Discord : Miettes
Messages : 2203
https://lectures-miettes.fr/

Image dans le profil en fonction du groupe Empty Image dans le profil en fonction du groupe

Mer 12 Mai 2021 - 13:32

Toutes versions

Image dans le profil en fonction du groupe


 Hello Smile

Dans ce tutoriel, nous allons voir comment ajouter une image dans le profil d'un membre dans un message en fonction du groupe auquel il appartient.

Image dans le profil en fonction du groupe Img-pr11 Image dans le profil en fonction du groupe Img-pr10

Tu peux voir le rendu sur l'un de mes forums de test :
https://miettes.lebonforum.com/
et plus précisemment dans ce topic :
https://miettes.lebonforum.com/t119-topic-divers

Comme tu le vois, dans ce sujet, plusieurs membres appartenant à des groupes différents ont répondu.

Nous allons ajouter une image pour 2 de ces groupes :
• une couronne pour le groupe des admins picto couronne
• une caméra de surveillance pour le groupe "gestion des éléments du forum" picto caméra surveillance


Idea Pré-requis :
• Tu dois pouvoir accéder aux templates du forum,
• Pour que ce tutoriel fonctionne, tu dois avoir activer "Appliquer la couleur aux membres de ce groupe ? :" dans les groupes (Panneau d'administration → Utilisateurs & groupes → Groupes → Administration des groupes),
• Ce tutoriel fonctionne pour toutes les versions de forum.

Une modification de template

Pour commencer, on va aller ajouter une balise dans notre template. Celle-ci va nous permettre de savoir où ajouter notre image. Pour cela, on va aller dans Panneau d'administration → Affichage → Templates → Général → viewtopic_body

Idea Ici, je pars des templates par défaut, c'est-à-dire non modifiés.

On va commencer par entourer le pseudo du membre d'une classe pour récupérer facilement sa couleur :
Code:
<span class="poster-userlink">{postrow.displayed.POSTER_NAME}</span>

On va ensuite aller ajouter ceci :
Code:
<span class="tr-img-groupe"></span>
à l'endroit voulu. C'est cet élément qui affichera notre image. Personnellement, je veux afficher mon image à coté du pseudo du membre. Je vais donc l'ajouter juste avant :
Code:
{postrow.displayed.POSTER_NAME}

Ce qui donne :
Code:
<span class="tr-img-groupe"></span> <span class="poster-userlink">{postrow.displayed.POSTER_NAME}</span>

On sauvegarde et on publie le template.

Du javascript

On va ensuite ajouter un nouveau javascript. Pour cela, il faut aller dans Panneau d'administration → Modules → HTML & Javascript → Gestion des codes javascript. On va créer un nouveau javascript qu'on ne va afficher que sur les sujets et on va l'appeler "[SJT] Image du groupe dans le profil". On va ensuite y mettre le code suivant :

Code:
/*Au chargement de la page*/
$(function(){


  // On parcourt la liste des messages
  $( '[class*="post--"]' ).each( function(){
    // On garde en mémoire le message sur lequel on est
    var $this = $(this);
  
    // Si le membre a son pseudo coloré
    if($this.find('.poster-userlink a[href^="/u"] > span:first-child').length){
      // On récupère la couleur du groupe du membre
      var userColor = $this.find('.poster-userlink a[href^="/u"] > span:first-child').attr('style').split(':')[1];
    
      // On ajoute cette information à la balise qui doit afficher l'image
      $this.find('.tr-img-groupe').attr('data-usergroup', userColor);
    }
    
  
  });
 
});

Idea Le code est commenté pour que tu puisses le comprendre, cela dit, tu n'as aucun changement à faire ici Smile

De la mise en page

Et pour finir, il ne nous manque qu'un peu de CSS pour afficher notre image. En effet, celle-ci sera affichée en tant qu'image de fond du bloc "tr-img-groupe" définit plus haut.

Pour cela, on va aller dans Panneau d'administration → Affichage → Images & couleurs → Couleurs → Feuille de style CSS et ajouter le code suivant :
Code:
/*** --- List Group - Profil --- ***/
.tr-img-groupe[data-usergroup]{
  background-position: 0 0;
  background-repeat: no-repeat;
  background-size: contain;
  display: inline-block;
  height: 20px; /* Hauteur de l'image */
  width: 20px; /* Largeur de l'image */
}

/** Admin **/
.tr-img-groupe[data-usergroup="#941B1B"]{
  background-image: url("https://i.servimg.com/u/f71/20/05/19/39/2517210.png");
}

/** Gestion des éléments du forum **/
.tr-img-groupe[data-usergroup="#00B0F0"]{
  background-image: url("https://i.servimg.com/u/f71/20/05/19/39/514210.png");
}

Idea La CSS n'est pas commentée, mais elle n'est pas compliquée à comprendre Smile




Si tu as le moindre souci ou une question en rapport avec ce tutoriel, n'hésite pas à nous la poster à la suite de ce message.


Revenir en haut
Permission de ce forum:
Vous pouvez répondre aux sujets dans ce forum
Les coups de ♥ des Râleuses

Post-It des Râleuses