Paramétrer un widget
2 participants
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Gérer l'apparence de son forum :: Archives des problèmes avec l'apparence du forum
Page 1 sur 1 • Partagez
Paramétrer un widget
Détails techniques
Version du forum : phpBB2
Poste occupé : Fondateur
Navigateur(s) concerné(s) : Google Chrome
Capture d'écran du problème :
- Voir l'image:
Personnes concernées par le problème : Tous les utilisateurs
Problème apparu depuis : Depuis toujours
Lien du forum : -
Description du problème
Bonjour, Bonsoir à tous
Je rencontre quelques problèmes avec un widget très indiscipliné !
Dans un premier temps, j'annonce que pour des raisons de confidentialité, il me sera impossible de vous délivrer le lien vers mon forum (actuellement en phase de construction) à cause de l'archivage du sujet.

J'espère que le screen sera assez parlant !
J'aimerais modifier le titre du widget (actuellement le pseudo de l'utilisateur connecté) pour qu'il prenne la couleur du groupe de l'utilisateur en question.
Par exemple, mon groupe d'administration étant en jaune, je souhaite que mon pseudo apparaisse en jaune… Ainsi de suite pour tous mes groupes.

Ensuite, j'aimerais ajouter des informations du profil de l'utilisateur concerné sur mon widget !
Exemple : J'ai une case sur les profils qui se nomme "Grade".
J'aimerais ajouter sur mon widget, sous les MP, une phrase "Grade : "xxx"" remplaçant le terme "xxx" par le terme que l'utilisateur aura rempli sur son profil.
Je suis trèèèèèès loin d'être une professionnelle du codage, mais voici ce que j'utilise pour le moment :
Titre du widget :
- Code:
<span class="js-username"></span>
Source du widget :
- Code:
<span class="js-avatar"></span><br /><span style="font-size: 13px;"><span style="color: #EEEEEE;">Messages :</span></span> <span class="js-user_posts"></span><br /><span style="font-size: 13px;"><span style="color: #EEEEEE;">Messages privés :</span></span> <span class="js-user_nb_privmsg"></span><br />
Page JS
- Code:
$(function(){
$.each(_userdata, function(key, value){
$(".js-" + key).html(value);
});
});
Mercii beaucoup d'avance pour le temps que vous m'accorderez.

Dernière édition par Miss Terry le Jeu 2 Mar 2023 - 0:17, édité 1 fois
Invité- Invité
Re: Paramétrer un widget
Bonjour !
Alors puisqu'on ne sait rien de votre forum, je vais faire au mieux :p
On ne pourra pas avoir toutes les informations avec les données _userdata de base (notamment les données de groupes) donc on va passer par le profil pour récupérer le reste : le nom de l'utilisateur avec la bonne couleur et les autres champs.
Le _userdata["user_id"] va nous permettre d'identifier la page profil de la personne actuellement connectée (toujours de la forme https://adressefourm/uxxxxxx où xxxxxx sera donc l'identifiant donné dans _userdata["user_id"]).
Dans le bloc $.get, data contient tout le code HTML de la page profil.
Ensuite, pour récupérer le nom d'utilisateur avec la couleur sur phpbb2 classique non modifié, dans la page profil, il correspond à '.h_member span', ce qui donnerait donc :
Maintenant, pour récupérer d'autres champs du profil, j'ai écrit un script qui permet d'enrichir les données du _userdata.
Pour ça, je prends les noms des champs du profil (ex : "Grade : "), mis en minuscule (ex : "grade : "), sans accents (ex : "grade : "), sans caractères autres que les lettres de l'alphabet (ex : "grade "), les espaces en bout supprimés (ex : "grade") et les espaces restants remplacés par des _ (ex : "grade")
La valeur du champ "Grade : " devient donc accessible dans _userdata['grade'] :
Ne reste plus qu'à remettre votre code à la fin :
Et normalement, si je ne me suis pas trompé, un champ <span class="js-grade"></span> aura la valeur qui a été entrée pour le "Grade : " dans le profil.
PS : il va falloir changer la class js-username parce que sinon, le username avec couleur récupéré sera écrasé par celui sans couleur du _userdata. Ou alors, on remplace directement la valeur _userdata["username"] par ce qu'on a récupéré dans le profil, comme ceci :
Et dans ce cas, plus de modif à faire, ça doit passer !
Alors puisqu'on ne sait rien de votre forum, je vais faire au mieux :p
On ne pourra pas avoir toutes les informations avec les données _userdata de base (notamment les données de groupes) donc on va passer par le profil pour récupérer le reste : le nom de l'utilisateur avec la bonne couleur et les autres champs.
Le _userdata["user_id"] va nous permettre d'identifier la page profil de la personne actuellement connectée (toujours de la forme https://adressefourm/uxxxxxx où xxxxxx sera donc l'identifiant donné dans _userdata["user_id"]).
- Code:
$(function(){
$.get('/u' + _userdata["user_id"], function(data){
});
});
Dans le bloc $.get, data contient tout le code HTML de la page profil.
Ensuite, pour récupérer le nom d'utilisateur avec la couleur sur phpbb2 classique non modifié, dans la page profil, il correspond à '.h_member span', ce qui donnerait donc :
- Code:
$(function(){
$.get('/u' + _userdata["user_id"], function(data){
$('.js-username').html($(data).find('.h_member span').prop('outerHTML'));
});
});
Maintenant, pour récupérer d'autres champs du profil, j'ai écrit un script qui permet d'enrichir les données du _userdata.
Pour ça, je prends les noms des champs du profil (ex : "Grade : "), mis en minuscule (ex : "grade : "), sans accents (ex : "grade : "), sans caractères autres que les lettres de l'alphabet (ex : "grade "), les espaces en bout supprimés (ex : "grade") et les espaces restants remplacés par des _ (ex : "grade")
La valeur du champ "Grade : " devient donc accessible dans _userdata['grade'] :
- Code:
$(function(){
$.get('/u' + _userdata["user_id"], function(data){
$('.js-username').html($(data).find('.h_member span').prop('outerHTML'));
$(data).find("tr[id^='field_id-']").each(function(){
let title = $(this).find('.gen:first').html();
let data = $(this).find('.field_uneditable').html();
title = title.toLowerCase(); // On met tout en minuscule
title = title.replaceAll(' ', ''); // On retire les
title = title.normalize("NFD").replace(/\p{Diacritic}/gu, ""); // On supprime les accents
title = title.replaceAll(/[^a-zA-Z ]/g, ''); // On ne garde que les lettres et les espaces
title = title.trim(); // On supprime les doubles espaces
title = title.replaceAll(' ', '_').toLowerCase(); // On remplace les espaces par des _
_userdata[title] = data;
});
});
});
Ne reste plus qu'à remettre votre code à la fin :
- Code:
$(function(){
$.get('/u' + _userdata["user_id"], function(data){
$('.js-username').html($(data).find('.h_member span').prop('outerHTML'));
$(data).find("tr[id^='field_id-']").each(function(){
let title = $(this).find('.gen:first').html();
let data = $(this).find('.field_uneditable').html();
title = title.toLowerCase(); // On met tout en minuscule
title = title.replaceAll(' ', ''); // On retire les
title = title.normalize("NFD").replace(/\p{Diacritic}/gu, ""); // On supprime les accents
title = title.replaceAll(/[^a-zA-Z ]/g, ''); // On ne garde que les lettres et les espaces
title = title.trim(); // On supprime les doubles espaces
title = title.replaceAll(' ', '_'); // On remplace les espaces par des _
_userdata[title] = data;
});
}).done(function() {
$.each(_userdata, function(key, value){
$(".js-" + key).html(value);
});
});
});
Et normalement, si je ne me suis pas trompé, un champ <span class="js-grade"></span> aura la valeur qui a été entrée pour le "Grade : " dans le profil.
PS : il va falloir changer la class js-username parce que sinon, le username avec couleur récupéré sera écrasé par celui sans couleur du _userdata. Ou alors, on remplace directement la valeur _userdata["username"] par ce qu'on a récupéré dans le profil, comme ceci :
- Code:
$(function(){
$.get('/u' + _userdata["user_id"], function(data){
_userdata["username"] = $(data).find('.h_member span').prop('outerHTML');
$(data).find("tr[id^='field_id-']").each(function(){
let title = $(this).find('.gen:first').html();
let data = $(this).find('.field_uneditable').html();
title = title.toLowerCase(); // On met tout en minuscule
title = title.replaceAll(' ', ''); // On retire les
title = title.normalize("NFD").replace(/\p{Diacritic}/gu, ""); // On supprime les accents
title = title.replaceAll(/[^a-zA-Z ]/g, ''); // On ne garde que les lettres et les espaces
title = title.trim(); // On supprime les doubles espaces
title = title.replaceAll(' ', '_'); // On remplace les espaces par des _
_userdata[title] = data;
});
}).done(function() {
$.each(_userdata, function(key, value){
$(".js-" + key).html(value);
});
});
});
Et dans ce cas, plus de modif à faire, ça doit passer !
Re: Paramétrer un widget
Bonsoir !
Je te remercie beaucoup pour ton aide.
Je ne doute nullement du fait que ça fonctionne parfaitement, je note donc le sujet en résolu. Je m'empresserais d'aller tester tout ça rapidement !
Merci encore
Je te remercie beaucoup pour ton aide.

Je ne doute nullement du fait que ça fonctionne parfaitement, je note donc le sujet en résolu. Je m'empresserais d'aller tester tout ça rapidement !
Merci encore

Invité- Invité
Re: Paramétrer un widget
![]() | Bienvenue sur le forum de support de Forumactif Puisque vous êtes nouveau, voici quelques sujets susceptibles de vous intéresser : N'hésitez pas à ouvrir un nouveau sujet si vous ne trouvez pas votre réponse. |

» Comment paramétrer son widget afin qu'il affiche les news ?
» Paramétrer la fonction mp
» je sais plus comment parametrer
» Paramétrer la présentation de l'auteur d'un post
» Paramétrer l'inscription à votre forum
» Paramétrer la fonction mp
» je sais plus comment parametrer
» Paramétrer la présentation de l'auteur d'un post
» Paramétrer l'inscription à votre forum
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Gérer l'apparence de son forum :: Archives des problèmes avec l'apparence du forum
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum