AccueilAccueil  Dernières imagesDernières images  FAQFAQ  RechercherRechercher  MembresMembres  S'enregistrerS'enregistrer  Connexion  
Le deal à ne pas rater :
Samsung 970 EVO Plus MZ-V7S1T0BW Disque SSD Interne NVMe M.2, 1 To, ...
42.99 €
Voir le deal

 

 PROFIL EN ONGLETS + ISOLER LES CHAMPS.

Aller en bas 
AuteurMessage
Velunes
Velunes
⋆ bloom and wander ⋆

Stars in the sky : 176
Crédit : merflk.
Pronom : elle/she/her.
MBTI : intj-t.
Hogwarts : slytherclaw.

PROFIL EN ONGLETS + ISOLER LES CHAMPS. Empty
MessageSujet: PROFIL EN ONGLETS + ISOLER LES CHAMPS.   PROFIL EN ONGLETS + ISOLER LES CHAMPS. EmptyLun 4 Jan - 23:41

Coucou !
Après avoir eu pas mal de demandes en privé au fil des ans me demandant comment j'ai réussi à installer ce système, voici une explication complète pour transformer le profil en profil avec onglets et isoler (déplacer) certains champs choisis dans un onglet précis.

Les codes de base ne m'appartiennent pas, j'ai moi-même suivi le tutoriel de La tambouille des râleuses en complément avec d'autres explications trouvées sur le net pour comprendre comment le faire fonctionner et je l'ai couplé à celui du Forum des forums. J'espère juste que mon explication complémentaire vous aidera.

Crédits:

- Javascript /explications de base : La tambouille des râleuses
- Système d'onglets : Forum des forums

Sachez que le javascript pour isoler les champs rentre en conflit avec celui pour ajouter les symboles FontAwesome. Je conseille de plutôt passer par le template overall_header si vous souhaitez utiliser FontAwesome.




P1 - PROFIL EN ONGLETS (SYSTAB)


TEMPLATES
Dans le template viewtopic_body, trouvez cet extrait (ligne 144):
Code:
<span class="postdetails poster-profile">
{postrow.displayed.POSTER_RANK}<br />
{postrow.displayed.RANK_IMAGE}{postrow.displayed.POSTER_AVATAR}<br /><br />
<!-- BEGIN profile_field -->
{postrow.displayed.profile_field.LABEL} {postrow.displayed.profile_field.CONTENT}{postrow.displayed.profile_field.SEPARATOR}
<!-- END profile_field -->
{postrow.displayed.POSTER_RPG}
</span><br />

Et remplacez-le par celui-çi :
Code:
<span class="postdetails poster-profile">
{postrow.displayed.POSTER_RANK}<br />
{postrow.displayed.RANK_IMAGE}{postrow.displayed.POSTER_AVATAR}<br /><br />
             
                                       
              <div class="systab">
 <div class="selected"> /* l'onglet qui sera d'office affiché en 1er dans le profil est sélectionné grâce au code : class="selected", si vous souhaité que ce soit un autre onglet qui soit sélectionné, déplacé ce bout de code à une autre div*/
   <span>Onglet 1</span>
        <span class="profil"> <!-- BEGIN profile_field --><div class="infos-posteur">
          <span class="profil_label"> <!-- Champs du profil  --> {postrow.displayed.profile_field.LABEL}</span>
              <!-- Contenu/réponses aux champs --> {postrow.displayed.profile_field.CONTENT}
             {postrow.displayed.profile_field.SEPARATOR}
          </div> <!-- END profile_field --> </span>
 </div>
 <div> /*soit cette div*/
   <span>Onglet 2</span>
   <div class="rpg"><!-- Feuille de personnage -->{postrow.displayed.POSTER_RPG}</div>
 </div>
 <div> /* ou celle-çi*/
   <span>Onglet 3</span>
   <div class="other"><!-- Les champs du profil seront déplacés ici --></div>
 </div>
</div>
</span><br />




JAVASCRIPT
Panneau d'administration > Modules > Javascript > Créer un nouveau javascript > Cocher " Sur les pages".

Code:
$(function() {
    // clic sur un onglet
    var d = function() {
        // si l'onglet est déjà actif, ne rien faire
        if ($(this).is(".selected")) return;
        // affiche le contenu correspondant et on met l'onglet en sélectionné
        var a = $(this).closest(".systab");
        a.find(".selected").removeClass("selected").filter(".content")[a.is(".s_slide") ? "slideUp" : a.is(".s_fade") ? "fadeOut" : "hide"](+((a.attr("class") || "").match(/^[sS]*(?:^|s)s_trans([0-9]+)(?:s|$)[sS]*$/) || ["", 500])[1]);
        $(this).addClass("selected").data("content").addClass("selected").stop(!0, !0)[a.is(".s_slide") ? "slideDown" : a.is(".s_fade") ? "fadeIn" : "show"](+((a.attr("class") || "").match(/^[sS]*(?:^|s)s_trans([0-9]+)(?:s|$)[sS]*$/) || ["", 500])[1])
    };
    // pour chacun des systèmes d'onglets
    $("div.systab").each(function() {
        var a = $("> div", this).detach(),
            c = this,
            b;
        // on ajoute le conteneur d'onglet avant ou après ( si s_bottom )
        $(this).html('<div class="' + ($(this).is(".s_bottom") ? "contents" : "tabs") + '"></div><div class="' + ($(this).is(".s_bottom") ?
            "tabs" : "contents") + '"></div>');
        $(a).each(function() {
            b = $(this).children(":first");
            b.is("span") ? (
                $("> div.tabs", c).append($(b).addClass("tab").data("content", $(this))), $(this).addClass("content").data("tab", b)) : $(this).remove()
        });
        $("> div.contents", this).append(a);
        b = $(".content:first,.content.selected", this).last();
        $(b).addClass("selected").siblings().hide();
        $(b).data("tab").addClass("selected")
    }).on("click", ".tab", d).filter(".s_hover").on("mouseenter", ".tab", d)
});

CSS
Code:
/*** ------------------------------- ***/
/*** PROFIL SYSTEME ONGLET --------------- ***/
/* .systab .tab => les onglet */
.systab .tab {
  padding: 2px 10px; /*contrôle la largeur et longueur des rectangles "onglet 1, 2 et 3"*/
  margin-left: 1px; /* créée un espace entre les 3 titres d'onglets*/
  color: #ccc;
  background: white;
  border: 1px solid #ccc;
  cursor: pointer;
}
/* .systab .tab:hover => les onglets survolés */
.systab .tab:hover {
  background: #fff;
  color: #939393;
  border-color: #fff;
}
/* .systab .tab.selected => les onglets sélectionnés */
.systab .tab.selected{
  color: #ccc;
  border:1px solid #ccc;
  background: #fff;
}
/* .systab .contents => les conteneurs des contenus associés aux onglets  */
.systab .contents {
  margin-bottom: 1px;
  color: #000;
  background: #fff;
  padding-top:5px;
}
/* style des onglets si ils sont à gauche ou à droite */
.systab.s_float .tab,.systab.s_float .tab {
  display: block;
  margin: 5px;
}
/* flottement des conteneurs si les onglets sont à gauche où à droite */
.systab.s_float .tabs,.systab.s_float .contents {
  float: left;
}


Dernière édition par Velunes le Mer 9 Mar - 19:18, édité 4 fois
Revenir en haut Aller en bas
https://velunes.tumblr.com
Velunes
Velunes
⋆ bloom and wander ⋆

Stars in the sky : 176
Crédit : merflk.
Pronom : elle/she/her.
MBTI : intj-t.
Hogwarts : slytherclaw.

PROFIL EN ONGLETS + ISOLER LES CHAMPS. Empty
MessageSujet: Re: PROFIL EN ONGLETS + ISOLER LES CHAMPS.   PROFIL EN ONGLETS + ISOLER LES CHAMPS. EmptySam 9 Jan - 17:36

P2 - ISOLER LES CHAMPS DU PROFIL

JAVASCRIPT
Panneau d'administration > Modules > Javascript > Créer un nouveau javascript > Cocher " Sur les pages".

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 = 'phpbb2',
        $chemin,
        $eltParent = '.postdetails.poster-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 .postbody .user-info .infos-posteur";
            break;

        // Si on est sur phpbb2
        case 'phpbb2':
            $chemin = ".post .postdetails.poster-profile .infos-posteur";
            break;

        // Si on est sur punbb
        case 'punbb':
            $chemin = ".post .postbody .user-info .infos-posteur";
            break;

        // Si on est sur AwesomeBB
        case 'AwesomeBB':
            $chemin = ".post-wrap .post-body .post-aside .infos-posteur";
            $eltParent = ".post-aside";
            break;

        // Si on est sur phpbb3, ModernBB, Invision
        default:
            $chemin = ".post_profil .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('.label > span:first-child').html() ;
 
        // On teste sur le champs correspond aux blocs qu'on veut isoler
        // pour info || signifie "ou"
       if( champs == "TEXTE 1" || champs == "TEXTE 2"){
            // Je déplace le contenu dans le bloc
            $(this).parents($eltParent).find('.other').append(this);
 
        }
 
    });
});



LE CHEMIN:
- Le chemin est ce qui permet au javascript de trouver exactement où se trouve les champs du profil à déplacer. Pour cela, il a besoin qu'on lui donne des références, qu'on lui montre le chemin en commençant du point le plus éloigné (le plus gros cadre jaune) jusqu'au point le plus près de la cible (en bleu).

TEMPLATE:


CE QUI DONNE:


Nous le renseignons donc dans le javascript :
js / chemin = jaune:

---------
LE PARENT:

Nous avons donc trouvé notre "chemin", maintenant, le javascript doit savoir où mettre les champs qu'on va déplacer.
Il a besoin de connaître le plus proche "parent" de notre "cible" (qui ici sera l'endroit où va atterrir les champs, donc notre 3e onglet nommé "other").

Nous pouvons donc voir dans les templates que le parent le plus proche est "postdetails poster-profile".
template / parent = bleu / cible = vert:


Nous renseignons donc cette info dans le javascript, la partie en bleu :
js / parent ($eltParent) = bleu / chemin = jaune:


Ce qui donne plus bas :
parent = bleu / cible = vert:


Citation :
$(this).parents($eltParent).find('.other').append(this);
Cela veut dire que le javascript va trouver les champs choisis dans l'entièreté des champs du profil = $(this), les déplacer vers ($eltParent) = parent le plus proche de la cible = ('.other') et y coller les champs choisis = (this).



LES CHAMPS:
1. Vous pouvez choisir quel champ vous allez déplacer dans le 3e onglet et vous pouvez en mettre autant que souhaité.

Vous devez impérativement écrire le nom du champ à la majuscule et bbcode près, le javascript étant sensible à cela.

Référez-vous à la capture d'écran ci-dessous pour voir comment trouver les champs et comment vous les avez écrit.

CAPTURE CHAMPS:
2. Dans mon tuto, j'ai choisi de déplacer les champs "Trigger" et "Warning", je vois que je les ai écrit avec une majuscule et sans bbcode.
3. Je retourne dans mon javascript et je descends jusqu'à ce code :
 
Citation :
if( champs == "TEXTE 1" || champs == "TEXTE 2"){

4. Que je modifie en ceci:
 
Citation :
if( champs == "Trigger" || champs == "Warning"){

5. Si je souhaite rajouter le champ "Rythme de rp" (se trouve juste au-dessus de celui de Trigger dans la capture d'écran), alors, je procède comme ceci:
 
Citation :
if( champs == "Trigger" || champs == "Warning" || champs == "Rythme de rp"){

L'ordre dans lequel les champs sont écrits n'a pas d'importance, ce qui est important c'est de respecter la mise en page du code et les majuscules.



/!\  /!\  /!\  /!\
Si vous souhaitez supprimer le nom du champ dans votre profil pour que, par exemple, dans le cas d'un gif, seul le gif s'affiche et pas "Image :", sachez que ce n'est PAS possible avec le tutoriel actuel.
Il a BESOIN que vous laissiez le "type d'affichage" en "Texte" (voir l'image ci-dessous).

CAPTURE:

Solutions :
1. Ne déplacez pas les champs que vous souhaitez mettre le type d'affichage en icône.
2.Vous pouvez cependant contourner cela grâce à du code et javascript, mais vous devrez quand même laisser le type d'affichage en texte. Ce tutoriel est en court d'écriture mais si vous vous sentez l'âme de tester par vous-même, voici le code que j'utilise : CLIQUE ICI.

------------------
Codes et tutos utilisés pour cette explication :
Système d'onglets = Forum des forums
Isoler les champs par La Tambouille des râleuses
Revenir en haut Aller en bas
https://velunes.tumblr.com
 
PROFIL EN ONGLETS + ISOLER LES CHAMPS.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» PROFIL EN ONGLETS + ISOLER LES CHAMPS. (EN REECRITURE)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
V E L U N E S :: CODAGES :: Version phpbb2-
Sauter vers: