Problème pour isoler les champs du profil

2 participants

Voir le sujet précédent Voir le sujet suivant Aller en bas

Résolu Problème pour isoler les champs du profil

Message par érinye. Ven 23 Juin 2023 - 15:22

Détails techniques


Version du forum : ModernBB
Poste occupé : Fondateur
Navigateur(s) concerné(s) : Google Chrome
Personnes concernées par le problème : Tous les utilisateurs
Lien du forum : (lien masqué, vous devez poster pour le voir)

Description du problème

Bonjour,
J'aide des amies dans le codage de leur forum et nous aimerions isoler certains champs du profil pour les mettre dans un second onglet. J'ai suivi le tuto de velunes ( https://velunes.forumactif.com/t92-profil-en-onglets-isoler-les-champs ) et malgré tous mes efforts rien ne fonctionne. Je suppose avoir mal retranscrit le chemin sur le js, mais je ne parviens pas à trouver mon erreur. J'étais pourtant parvenue à le faire fonctionner sur un autre forum (en phpbb2) mais cette fois-ci quelque chose bloque et nous aurions besoin d'aide.
Je vous mets à la suite le template de viewtopic_body, ainsi que le js utilisé pour isoler les champs. Si vous avez besoin de quoi que ce soit d'autres auquel je n'aurais pas pensé, n'hésitez pas.

template:

javascript:

Merci par avance de nous aider à résoudre ce problème.
érinye.

érinye.
Nouveau membre

Messages : 15
Inscrit(e) le : 01/05/2022

https://forum.forumactif.com/enconstruction
érinye. a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Problème pour isoler les champs du profil

Message par Toryudo Ven 23 Juin 2023 - 18:43

Bonjour !

Sur le Javascript en lui-même, je vois deux erreurs par rapport au code de votre forum.
Au niveau de :
Code:
var champs = $(this).find('.label > span:first-child').html();

Ce n'est pas correct par rapport à ce que vous avez : vous ne cherchez pas un span à l'intérieur d'un .label, vous cherchez plutôt un span qui est lui-même un .label. Plutôt comme ceci donc (si tant est que le :first-child soit utile) :
Code:
var champs = $(this).find('span.label:first-child').html();

Ensuite, il y a un problème avec vos champs. Par exemple, votre nom de champ "prénom/pseudo" n'est pas correct par rapport à ce que fait le script, qui récupère donc le contenu du label. Et le contenu de ce label, c'est précisément "prénom/pseudo : ", avec l'espace, les : et encore un espace.

En tant qu'invité, je ne vois pas les autres champs, mais je suppose qu'ils marchent tous de la même façon. Il faudra donc ajouter " : " à la fin de chaque champ. Et voilà le script corrigé qui devrait fonctionner :
Code:
jQuery(function () {
 
    // on indique la version du forum
    // attention de bien respecter les écritures ci-dessous
    // invision, phpbb2, phpbb3, punbb, Invision, ModernBB, AwesomeBB
    var versionForum = 'ModernBB',
        $chemin,
        $eltParent = '.post_profile';
 
    // On indique le chemin vers la balise qui contient les champs du profil
    switch(versionForum){
        // Si on est sur invision
        case 'invision':
            $chemin = ".post.post_row .post_profile .post_userinfo .infos-posteur";
            break;
 
        // Si on est sur phpbb2
        case 'phpbb2':
            $chemin = ".post.post_row .post_profile .post_userinfo .infos-posteur";
            break;
 
        // Si on est sur punbb
        case 'punbb':
            $chemin = ".post.post_row .post_profile .post_userinfo .infos-posteur";
            break;
 
        // Si on est sur AwesomeBB
        case 'AwesomeBB':
            $chemin = ".post.post_row .post_profile .post_userinfo .infos-posteur";
            $eltParent = ".post_profile";
            break;
 
        // Si on est sur phpbb3, ModernBB, Invision
        default:
            $chemin = ".post_profile .infos-posteur";
            break;
    };
 
    // Si la structure est différente de celle de base
    // indiquer le bon chemin et
    // décommenter (en supprimer // ) la ligne ci-dessous
    // chemin = "ton chemin";
 
    // On parcourt chaque champs des profils
    $( $chemin ).each(function( index ) {
        // On récupére le contenu html de ces champs
        var champs = $(this).find('span.label:first-child').html() ;

        // On teste sur le champs correspond aux blocs qu'on veut isoler
        // pour info || signifie "ou"
      if( champs == "prénom/pseudo : " || champs == "multicomptes : " || champs == "warning : " || champs == "triggers : " || champs == "pronom inrp : " || champs == "pronom irl : " || champs == "disponibilité : " || champs == "listing : "){
            // Je déplace le contenu dans le bloc
            $(this).parents($eltParent).find('.other').append(this);
        }
    });
});

PS : s'il y a des champs avec des majuscules, ce sera obligatoire aussi, à vérifier !
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1323
Inscrit(e) le : 31/03/2020

https://deus-academia.forumactif.com/
Toryudo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Problème pour isoler les champs du profil

Message par érinye. Ven 23 Juin 2023 - 18:54

Bonjour,
Tout d'abord merci beaucoup pour votre réponse (si rapide en plus). J'aurais pu chercher longtemps mon erreur sur le chemin à ce que je vois ahah. J'avoue que puisqu'il a fonctionné tel quel sur un autre forum, je ne m'étais pas dit que le soucis pouvait venir de là, mais en faisant les corrections tout fonctionne parfaitement et pour ça un immense merci !  
Merci aussi pour vos explications, ça me permet de mieux appréhender le code en lui même et c'est vraiment appréciable.
Problème résolu pour le coup et encore une fois merci à vous !
érinye.

érinye.
Nouveau membre

Messages : 15
Inscrit(e) le : 01/05/2022

https://forum.forumactif.com/enconstruction
érinye. a été remercié(e) par l'auteur de ce sujet.

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum