Pour mon troisième tuto, je vous propose un système de réputation complétement revisité !
Vous vous souvenez du + et du - sur le côté des messages comme ici, sur Never-Utopia, et cette jolie barre verte pour les votes positifs et rouges pour les négatifs ? C'est pas très esthétique, pas très personnalisable, n'est-ce pas ? Oh et combien de fois on a oublié de voter après avoir lu un post trop long car il fallait remonter le sujet afin de retrouver nos petits + et nos petits - ?
Pas très pratique tout ça. La logique voudrait qu'on puisse voter une fois le post lu et comme ils ne sont pas tous de la même longueur...
Alors pour les feignants comme moi qui ont la flemme de remonter les sujets, je vais vous montrer comment positionner le système de réputation en bas du message juste au-dessus de la signature (pour celles et ceux qui ne l'ont pas déplacée dans les templates bien sûr). Mais ce n'est pas tout ! Nous allons supprimer ce + et ce - ainsi que cette barre impossible à personnaliser et les remplacer par un système de "J'aime" qui indiquera le nombre de votes positifs reçus.
Notez que les votes négatifs ne seront plus pris en compte. Pour celles et ceux que cela pourrait gêner, il suffit de se dire que si tu n'aimes pas, tu votes pas. xD Vous vous exprimer en ne vous exprimant pas... (Désolé, je fatigue ! ^^) . C'est beaucoup moins "triste" que de savoir que des personnes n'aiment clairement pas ce qu'on a fait ou dit. Et oui, cela me fait de la peine de recevoir des appréciations négatives, que voulez-vous, je suis un grand sensible. *sort*
Passons aux choses sérieuses. Voici, en images, ce à quoi vous pouvez vous attendre en suivant ce tutoriel :
- Exemple :
Dans le premier message, l'icône en forme de pouce relevé correspond au résultat lorsque personne n'a voté.
Dans le deuxième message, l'icône indique que vous venez de voter. Petit plus, vous n'êtes pas redirigé vers la page de confirmation des votes. Lorsque vous votez vous pouvez continuer de lire les messages suivants tranquillement !
Dans cette seconde image, le premier message vous montre ce que vous obtenez quand une personne a déjà voté mais pas vous.
Et enfin, dans le deuxième message, il s'agit du résultat obtenu sur un message où vous avez déjà voté.
Notez que le nombre de votes disparaît au moment où vous cliquez sur l'icône "J'aime" pour enregistrer votre vote. Le total des "J'aime" réapparaît une fois la page revisitée !
Attention, il n'y a aucune garantie que ce tutoriel fonctionne si vous avez trop modifié le template viewtopic_body. Vous devez aussi avoir un compte fondateur sur un forum phpBB 2 pour pouvoir modifier le template qui nous intéresse et, bien sûr, avoir activé le système de réputation dans les modules.
Je vous ai mis l'eau à la bouche ?
*part se cacher*
On va commencer par un copier/coller tout simple pour le début.
Panneau d'administration > Modules > Gestion des codes Javascript.
Vérifiez que vous avez activé et enregistré la gestion des codes Javascript. Puis créer un nouveau javascript, mettez le titre que vous voulez, cochez "Sur toutes les pages" ou "Sur les sujets", comme vous voulez, bien qu'en choisissant "Sur les sujets", j'ai eu l'impression que le code chargeait plus lentement alors qu'avec la première option, je n'ai rien remarqué.
Ensuite collez ce code :
- Code:
$(function(){
$(".vote").each(function(){
$(this).find(".vote-button:first a").html('<img src="ADRESSE DE VOTRE IMAGE POUR LE VOTE POSITIF" alt="Voter" title="Voter" />').click(function(){
$.get($(this).attr("href"));
$(this).parent().html('<img src="ADRESSE DE VOTRE IMAGE APPARAISSANT LORSQUE VOUS VOTEZ" alt="Vote enregistré" title="Vote engregistré" />');
return!1
});
$(this).closest("tr.post").find("div.vote_pos").append($(this).find(".vote-button:first a")).append($(this).find(".vote-bar").length?' <div class="vote_count" title="Total des votes">'+$(this).find(".vote-bar").attr("title").replace(/^.*\(([0-9]*) .*?\)$/,"$1"):"")+'</div>';
$(this).remove()
})
});
Je n'ai pas fourni les images donc vous devrez faire les vôtres, il suffira de remplacer les phrases explicatives en capitales dans le code JS par l'url de l’image correspondante. Ici, il s'agit d'une image cliquable du même genre que le "J'aime" de Facebook (ou ce que vous voulez, vous pouvez même remplacer le code de l'image par du HTML histoire de faire sans image pour ceux qui préfèrent le texte et une belle mise en forme via CSS, à vous de jouer avec votre créativité) et d'une autre image qui indique que vous avez cliqué dessus, comme un "J'aime" avec moins d'opacité par exemple.
Faites attention aux tailles de vos images, elles devront toutes être de la même hauteur pour un alignement optimal (Pareil si vous changer les images par du HTML).
Nous allons maintenant placer le système de réputation. Grâce au JS que nous venons d'installer la tâche va être grandement simplifiée, il suffira de mettre une div et une class là où nous souhaitons afficher nos "J'aime".
Panneau d'administration > Affichage > Templates > viewtopic_body
Repérez :
- Code:
<!-- BEGIN switch_signature -->
- Code:
<div class="vote_pos"></div>
- Code:
<div>{postrow.displayed.MESSAGE}</div>
Enfin, pour éviter qu'au chargement de la page la bar de vote s'affiche quelques secondes avant que le JS prenne le relais, repérez ceci :
- Code:
<!-- BEGIN switch_vote_active -->
<div class="vote gensmall">
Et remplacez par :
- Code:
<!-- BEGIN switch_vote_active -->
<div class="vote gensmall" style="display: none">
J'ai juste rajouté un display : none afin d'empêcher la bar d'être générée pour que cela fasse plus propre à l'affichage. :)
La dernière étape : la mise en forme via le CSS.
Panneau d'administration > Affichage > Couleurs > Feuille de style CSS
Collez ceci :
- Code:
.vote_pos
{
width: 100%; /* permet de prendre toute la largeur du message */
height: 30px; /* hauteur de toutes vos images à adapter selon les vôtres */
margin-top: 10px; /* petite marge pour éviter que les votes se collent trop prêt du message */
text-align: right; /* positionne le bouton de vote et le bouton de vote cliqué sur la droite du message */
}
.vote_count /* personnalise le nombre des votes */
{
float: left; /* oblige le total des votes à bien s'afficher à gauche des messages, aligné avec le bouton de vote cliquable */
width: 30px; /* largueur de l'image de fond qui s'affiche sous le total des votes */
height: 30px; /* hauteur de toutes vos images à adapter selon les vôtres, doit être identique au height du vote_pos */
padding-top: 6px; /* à modifier selon votre image de fond afin de bien positionner vos chiffres sur la dite image */
color: #000000; /* la couleur des chiffres du total des votes d'un message */
font-size: 10px; /* la taille des chiffres du total des votes d'un message */
font-weight: bold; /* met en gras les chiffres du total des votes d'un message */
text-align: center; /* centre les chiffres du total des votes d'un message par rapport à l'image de fond si tant est que vous l'ayez bien centrée lors de sa création */
background-image: url("ADRESSE URL DE VOTRE IMAGE DE FOND DES CHIFFRES DU TOTAL DES VOTES");
background-repeat: no-repeat; /* empêche que l'image de fond se répète */
}
Lisez bien les annotations entre /* */ pour personnaliser le code selon vos besoins, puis supprimez-les, elles risquent de vous empêcher de valider votre css à cause des apostrophes (ou des accents, des virgules, je ne sais plus, je sais juste que j'ai déjà eu des bogs et c'étaient les annotations les responsables ! ><).
Validez et vous voilà avec un tout nouveau système de réputation !
Merci d'avoir lu ce tutoriel jusqu'au bout !
Enfin un crédit pour Never-Utopia serait grandement apprécié si vous utilisez ce système de votes pour l'aide que ce tutoriel vous a - peut-être - apporté et pour le temps que j'ai passé à rédiger ce sujet
A vous les studios !
P.S. : Vous pouvez observer à peu près le même système que je propose dans ce tutoriel sur ce forum officiel de FINAL FANTASY XIV. C'est tout en bas. Si vous avez un compte et êtes connecté, un bouton "Jaime" s'affiche à droite et le vote s'ajoute presque instantanément aux chiffres entre parenthèses à côté du pouce relevé. ;)Je fais de la pub en passant pour le jeu. xD
Dernière édition par Onyx le Sam 5 Mai 2018 - 23:33, édité 7 fois (Raison : Petite amélioration)