Problème pour isoler les champs du profil
2 participants
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1 • Partagez
Problème pour isoler les champs du profil
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:
- Code:
<br />
<!----------------------------------------------->
<!-- LIENS DE NAVIGATION -------------->
<div class="navigation_links">
<!-- Chaîne de lien : Catégorie > Forum > Sous-fo -->
<span class="navigation_chain">
<a class="nav" href="{U_INDEX}"><span>{L_INDEX}</span></a> {NAV_CAT_DESC}
</span>
</div>
<!----------------------------------------------->
<!-- BARRE DE GESTION -------------->
<div class="links_bar">
<!-- Boutons : nouveau -->
<!-- BEGIN switch_user_authpost -->
<a class="buttons" href="{U_POST_NEW_TOPIC}" rel="nofollow"><img class="newtopic_button" src="{POST_IMG}" class="{POST_IMG_CLASS}" alt="{L_POST_NEW_TOPIC}" /></a>
<!-- END switch_user_authpost -->
<!-- Bouton : répondre -->
<!-- BEGIN switch_user_authreply -->
<a class="buttons" href="{U_POST_REPLY_TOPIC}"><img class="reply_button" src="{REPLY_IMG}" class="i_reply" alt="{L_POST_REPLY_TOPIC}" /></a>
<!-- END switch_user_authreply -->
<!-- Pagination -->
<span class="pagination right">
{PAGINATION}
</span>
</div>
<!----------------------------------------------->
<!-- MESSAGE -------------->
<!-- Contenenur des messages -->
<div class="container">
<!-- Titre du poste -->
<h1 class="page-title">{TOPIC_TITLE}</h1>
<!-- Liste des participants du sujet -->
{POSTERS_LIST}
<!-- Sondage (template : viewtopic_poll_ballot /// viewtopic_poll_result) -->
{POLL_DISPLAY}
<!-- Affichage d'un message -->
<!-- BEGIN postrow -->
<!-- BEGIN displayed -->
<div id="{postrow.displayed.U_POST_ID}"></div>
<div class="post post_row post--{postrow.displayed.U_POST_ID}" id="p{postrow.displayed.U_POST_ID}">
<!-- Conteneur informations du message-->
<div class="post_details">
<span class="post_date">
<!-- Lien d'ancre vers le message -->
<div class="ancre_post"><a href="#{postrow.displayed.U_POST_ID}">#</a></div>
<!-- Date du message -->
<time>{postrow.displayed.POST_DATE_NEW}</time>
</span>
<!-- Boutons d'édition de message -->
<ul class="profile-icons">
<li>{postrow.displayed.QUOTE_IMG}</li>
<li>{postrow.displayed.EDIT_IMG}</li>
<li>{postrow.displayed.DELETE_IMG}</li>
<li>{postrow.displayed.IP_IMG}</li>
</ul>
<!-- Conteneur du bouton like -->
<!-- BEGIN switch_likes_active -->
<div class="like_button">
<!-- Bouton "j'aime" -->
<button class="rep-button {postrow.displayed.switch_likes_active.C_VOTE_LIKE}" data-href="{postrow.displayed.switch_likes_active.U_VOTE_LIKE}" data-href-rm="{postrow.displayed.switch_likes_active.U_VOTE_RM_LIKE}">
<!-- Texte "j'aime" -->
<span class="like_text">:hearts:</span>
<!-- Compte des "j'aime" -->
<span class="like_text">{postrow.displayed.switch_likes_active.COUNT_VOTE_LIKE}</span>
</button>
</div>
<!-- END switch_likes_active -->
<!-- Fin du bouton like -->
</div>
<!-- Fin détails -->
<!-- Colonne de profil -->
<div class="post_profile" id="profile{postrow.displayed.U_POST_ID}">
<center>
<div class="cadre_profil">
<!-- Pseudo -->
<span class="post_pseudo">{postrow.displayed.POSTER_NAME}</span>
<div class="pseudoba"><div>
<!-- Rang -->
<div class="post_rank">
{postrow.displayed.POSTER_RANK_NEW} <!-- Textuel -->
{postrow.displayed.RANK_IMAGE} <!-- Image -->
</div>
<!-- Avatar -->
<div class="post_avatar">
{postrow.displayed.POSTER_AVATAR}
</div>
</div></center>
<!-- En ligne -->
<center>
<div class="{postrow.displayed.ONLINE_IMG_NEW}"> <!-- VOIR CSS .online -->
{postrow.displayed.ONLINE_IMG_NEW}<!-- Textuel -->
</div>
</center>
<br />
<div class="post_userinfo">
<!-- Champs de profil -->
<div class="systab">
<div class="selected">
<span class="tab1">light</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>
<span class="tab2">shadow</span>
<div class="other"><!-- autres champs profil --></div>
</div>
</div>
<br />
<!-- Fin de champs de profil -->
<!-- Champs de profil de la feuille de personnage -->
{postrow.displayed.POSTER_RPG}
</div>
<!-- Lien de contact -->
<div class="profil_contact">
{postrow.displayed.PROFILE_IMG}<!-- Profil -->
{postrow.displayed.PM_IMG} <!-- MP -->
<!-- BEGIN contact_field -->
{postrow.displayed.contact_field.CONTENT}
<!-- END contact_field -->
</div>
</div>
<!-- Fin colonne profil -->
<!-- Contenu du message -->
<div class="post_message postbody content">
<div>{postrow.displayed.MESSAGE}</div>
<!-- Signature -->
<!-- BEGIN switch_signature -->
<div class="signature_div" id="sig{postrow.displayed.U_POST_ID}">{postrow.displayed.SIGNATURE_NEW}</div>
<!-- END switch_signature -->
</div>
<!-- Fin du contenu du message -->
</div>
<!-- END displayed -->
<!-- END postrow -->
<!-- Fin affichage d'un message -->
</div>
<!-- Fin des messages -->
<!----------------------------------------------->
<!-- BARRE DE GESTION -------------->
<div class="links_bar">
<!-- Lien "surveiller le sujet" -->
<!-- BEGIN switch_user_logged_in -->
<!-- BEGIN watchtopic -->
<span class="specials_links">{S_WATCH_TOPIC}</span>
<!-- END watchtopic -->
<!-- END switch_user_logged_in -->
<!-- BEGIN switch_plus_menu -->
<!-- Lien "sujets surveillés" -->
<a class="specials_links" href="{U_WATCHSEARCH_JS_PLUS_MENU}">Sujets surveillés</a>
<!-- END switch_plus_menu -->
<!-- Pagination -->
<!-- BEGIN topicpagination -->
<span class="pagination right">{PAGINATION}</span>
<!-- END topicpagination -->
</div>
<!----------------------------------------------->
<!-- REGLES DE LA CATEGORIE (si activé) -------------->
<!-- BEGIN switch_forum_rules -->
<div class="panel" id="forum_rules">
<!-- Titre "règlement" -->
<div class="h3">{L_FORUM_RULES}</div>
<!-- Règlement -->
<div class="postbody">
<!-- Image du règlement -->
<!-- BEGIN switch_forum_rule_image -->
<img class="left logo" src="{RULE_IMG_URL}" alt="" />
<!-- END switch_forum_rule_image -->
<!-- Contenu -->
{RULE_MSG}
</div>
</div>
<!-- END switch_forum_rules -->
<!----------------------------------------------->
<!-- REPONSE RAPIDE -------------->
<div class="container quickreply" id="quickreply_content">
<!-- BEGIN switch_user_logged_in -->
{QUICK_REPLY_FORM}
<!-- END switch_user_logged_in -->
</div>
<!----------------------------------------------->
<!-- BARRE DE GESTION -------------->
<div class="links_bar">
<!-- Bouton : nouveau -->
<!-- BEGIN switch_user_authpost -->
<a class="buttons" href="{U_POST_NEW_TOPIC}" rel="nofollow"><img class="newtopic_button" src="{POST_IMG}" class="{POST_IMG_CLASS}" alt="{L_POST_NEW_TOPIC}" /></a>
<!-- END switch_user_authpost -->
<!-- Bouton : répondre -->
<!-- BEGIN switch_user_authreply -->
<a class="buttons" href="{U_POST_REPLY_TOPIC}"><img class="reply_button" src="{REPLY_IMG}" class="i_reply" alt="{L_POST_REPLY_TOPIC}" /></a>
<!-- END switch_user_authreply -->
<!-- BEGIN switch_plus_menu -->
<span class="right">
<a href="{U_FAVOURITE_JS_PLUS_MENU}">Ajouter le sujet à ses favoris</a>
</span>
<!-- END switch_plus_menu -->
</div>
<br/>
<!----------------------------------------------->
<!-- SAUTER VERS UN AUTRE FORUM -------------->
<form action="{S_JUMPBOX_ACTION}" method="get" onsubmit="if(document.jumpbox.f.value == -1){return false;}" class="left">
<fieldset class="jumpbox">
<label><w>{L_JUMP_TO} :</w> </label>
{S_JUMPBOX_SELECT}
<input class="button2" type="submit" value="{L_GO}" />
</fieldset>
</form>
<!----------------------------------------------->
<!-- BOUTONS DE MODERATION -------------->
<!-- BEGIN viewtopic_bottom -->
<form method="get" action="{S_FORM_MOD_ACTION}" class="right">
<fieldset class="quickmod">
<input type="hidden" name="t" value="{TOPIC_ID}" />
<!-- <input type="hidden" name="sid" value="{S_SID}" /> -->
<input type="hidden" name="{SECURE_ID_NAME}" value="{SECURE_ID_VALUE}" />
<label><w>{L_MOD_TOOLS} :</w> </label>
{S_SELECT_MOD}
<input class="button2" type="submit" value="{L_GO}" />
</fieldset>
<span class="right">{S_TOPIC_ADMIN}</span>
</form>
<!-- END viewtopic_bottom -->
<div class="clear"></div>
<!-- Script image recadré -->
<!-- BEGIN switch_image_resize -->
<script type="text/javascript">
//<![CDATA[
$(resize_images({
'selector': '.postbody .content',
'max_width': {
switch_image_resize.IMG_RESIZE_WIDTH
},
'max_height': {
switch_image_resize.IMG_RESIZE_HEIGHT
}
}));
//]]>
</script>
<!-- END switch_image_resize -->
<!-- BEGIN switch_plus_menu -->
<script type="text/javascript">
//<![CDATA[
var multiquote_img_off = '{JS_MULTIQUOTE_IMG_OFF}',
multiquote_img_on = '{JS_MULTIQUOTE_IMG_ON}';
</script>
<!-- END switch_plus_menu -->
<script type="text/javascript">
var hiddenMsgLabel = {
visible: '{JS_HIDE_HIDDEN_MESSAGE}',
hidden: '{JS_SHOW_HIDDEN_MESSAGE}'
};
showHiddenMessage = function(id) {
try {
var regId = parseInt(id, 10);
if (isNaN(regId)) {
regId = 0;
}
if (regId > 0) {
$('.post--' + id).toggle(0, function() {
if ($(this).is(":visible")) {
$('#hidden-title--' + id).html(hiddenMsgLabel.visible);
} else {
$('#hidden-title--' + id).html(hiddenMsgLabel.hidden);
}
});
}
} catch (e) {}
return false;
};
//]]>
</script>
- javascript:
- 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('.label > span: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);
}
});
});
Merci par avance de nous aider à résoudre ce problème.
Re: Problème pour isoler les champs du profil
Bonjour !
Sur le Javascript en lui-même, je vois deux erreurs par rapport au code de votre forum.
Au niveau de :
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) :
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 :
PS : s'il y a des champs avec des majuscules, ce sera obligatoire aussi, à vérifier !
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 !
Re: Problème pour isoler les champs du profil
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 !
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 !
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum