Script pour liste des membres [js]

3 participants

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

Résolu Script pour liste des membres [js]

Message par Ashling Jeu 16 Aoû 2018 - 0:08

Détails techniques

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

Description du problème

Bonjour !
Je viens requérir votre aide pour un petit soucis de javascript ! En effet, je suis en train de coder un template #memberlist_body et je suis confrontée à un petit soucis m'empêchant de continuer. J'ai déjà fait toute la structure et pas mal d'ajouts que je désirais faire donc j'ai fait un petit schéma !

Schéma:

Schématiquement, le code de base de chaque membre, nettoyé de toutes les informations inutiles, est celui là :

Code:
<!-- BEGIN memberrow -->
  <div id="member-id">
     <div class="member-nom">PSEUDO</div>
     <div class="member-avatar">(image avatar)</div>
     <div class="member-rang">rang textuel du personnage</div>
  </div>
  <!-- END memberrow -->

Afin de poursuivre mon template, j'ai besoin d'un script qui rajoute une class avec pour no, le nom du rang au niveau de la div #member-id. Par exemple si le rang du personnage est rang1, que le codage devienne :

Code:
<!-- BEGIN memberrow -->
  <div id="member-id" class="member-rang1">
     <div class="member-nom">PSEUDO</div>
     <div class="member-avatar">(image avatar)</div>
     <div class="member-rang">rang1</div>
  </div>
  <!-- END memberrow -->

J'ai donc fait un script pour cela, ce qui donne :
Code:
<!-- BEGIN memberrow -->
  <div id="member-id" class="rang1">
     <div class="member-nom">PSEUDO</div>
     <div class="member-avatar">(image avatar)</div>
     <div id="member-rang">rang1</div>
  </div>
  <script type="text/javascript">$(document).ready(function () {if("#member-rang > rang1") {$("#member-id").addClass('member-rang1');}});</script>
  <!-- END memberrow -->

Le script fonctionne mais uniquement sur le premier membre de la liste et si par exemple le troisième membre à rang2 comme rang, alors la div parente du premier membre de la liste devient :

Code:
<div id="member-id" class="rang1 rang2"></div>

Auriez-vous une idée de comment appliquer ce script à chaque membre sans que cela ne s'accumule sur le premier ?

Merci beaucoup à ceux qui prendront le temps de lire ! Bonne soirée !
Ashling

Ashling
**

Messages : 72
Inscrit(e) le : 11/08/2013

http://quasar.forumactif.org/
Ashling a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Script pour liste des membres [js]

Message par Neptunia Jeu 16 Aoû 2018 - 0:32

Bonjour ^^


A vue de nez je vois deux soucis dans votre codage.

Le premier :

<!-- BEGIN memberrow -->
...
<!-- END memberrow -->

Ceci est une boucle, elle sera exécutée autant de fois que vous affichez de membres par page.

<div id="member-id" class="rang1">
Ceci est un id. Et sera répété autant de fois qu'il y a de membres puisqu'il est inclus dans la boucle.

Hors un id se doit de n'être utilisé qu'une fois par page.
Comme l'id est unique sur chaque page, javascript va toujours renvoyer la première occurence de l'id puisque cette occurrence se doit d'être la seule.
Si vous utilisez plusieurs fois par page cet élément, vous devez utiliser une class à la place de l'id.




Le second :
Vous placez le script à l'intérieur de la boucle et allez donc l'exécuter autant de fois qu'il y a de membres sur la page.

Vous devriez comme dans ce sujet placer le script après la boucle :
résolu Coloriser la liste de membres en fonction de la couleur de pseudo
Neptunia

Neptunia
Membre actif

Féminin
Messages : 17853
Inscrit(e) le : 08/08/2010

https://www.galaxie-series.net/
Neptunia a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Script pour liste des membres [js]

Message par Ashling Jeu 16 Aoû 2018 - 14:41

Merci pour votre rapide réponse !

J'ai donc changé le code en cela :

Code:
<!-- BEGIN memberrow -->
  <div class="member-id">
     <div class="member-nom">PSEUDO</div>
     <div class="member-avatar">(image avatar)</div>
     <div class="member-rang">rang1</div>
  </div>
  <!-- END memberrow -->
  <script type="text/javascript">$(document).ready(function () {if(".member-rang > rang1") {$(".member-id").addClass('member-rang1');}});</script>
  <script type="text/javascript">$(document).ready(function () {if(".member-rang > rang2") {$(".member-id").addClass('member-rang2');}});</script>

Le problème est que maintenant, toutes .member-id prennent toutes les classs des différents rangs, n'ayant mis que deux rangs pour l'instant, elles ont toutes :

Code:
<div class="member-id rang1 rang2">

Je me demandais du coup s'il y avait "moyen de cibler" le JS sur plusieurs éléments d'une même page ?
Ashling

Ashling
**

Messages : 72
Inscrit(e) le : 11/08/2013

http://quasar.forumactif.org/
Ashling a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Script pour liste des membres [js]

Message par Neptunia Jeu 16 Aoû 2018 - 15:48

$(".member-id") va cibler toutes les occurences de la class member-id et non uniquement la div parente de l'élément sélectionné.

Code non testé :

Code:
<script type="text/javascript">$(document).ready(function () {if(".member-rang > rang1") {.parent().addClass('rang1');}});</script>
Neptunia

Neptunia
Membre actif

Féminin
Messages : 17853
Inscrit(e) le : 08/08/2010

https://www.galaxie-series.net/
Neptunia a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Script pour liste des membres [js]

Message par Invité Jeu 16 Aoû 2018 - 20:23

Hello Ashling et Hélène,

très joli forum  Wink .

le template dans sa totalité aurait été un plus..


Ton code html avec les variables doit ressembler à ceci:
Code:

<div class="member-id">
<div class="member-nom"><a class="gen Pseudo" href="{memberrow.U_VIEWPROFILE}">{memberrow.USERNAME}</a></div>
<div class="member-avatar"><a href="{memberrow.U_VIEWPROFILE}">{memberrow.AVATAR_IMG}</a></div>
<div class="member-rang">Aucun rang</div>
  </div>



Si je pars de ce dernier, le script sera et si le profil avancé est activé:
Utilisateurs et groupes/Profil/Options générales/Options générales du profil

Activer le profil avancé : Oui

Modules/HTML&JAVASCRIPT/Gestion des codes Javascript/Créer un nouveau Javascript

Mettre un titre explicite.
Coches sur toutes les pages.


Déposes ceci:
Code:

$(function(){
$('.Pseudo').each(function(){
var $this=$(this).closest('div').next().next();
var M14_link=$(this).attr('href');
$.get(M14_link , function(data){
var h=$(data).find('#profile-advanced-details').closest('td[valign="top"]').next().find('.forumline td.row1.gensmall:first').text();
var M14_rang = h.substring(5,);  
  if(M14_rang)
  {
$this.parent().addClass(M14_rang);
$this.text(M14_rang);
  }
  else
  {
$this.text('Aucun rang');    
  }
});
                
});});



Penses à cliquer sur le bouton VALIDER


Chaque cellule aura la class identique à son rang :

memberlist_body - Script pour liste des membres [js] 119

Bon le rendu n'est pas très très chouette comparé à ton fofo  Very Happy .




Et voilou  Wink  .

a++
Anonymous

Invité
Invité


Invité a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Script pour liste des membres [js]

Message par Chacha Mer 22 Aoû 2018 - 9:46

memberlist_body - Script pour liste des membres [js] UmaslZ4Bonjour,

Attention, cela fait 6 jours que nous n'avons pas de nouvelles concernant votre demande, si vous ne voulez pas voir votre sujet déplacé à la corbeille, merci de poster dans les 24h qui suivent ce message.

Si votre sujet est résolu, merci d'éditer votre premier message et de cocher l'icône « résolu »
Chacha

Chacha
Modéractif
Modéractif

Masculin
Messages : 69301
Inscrit(e) le : 21/08/2010

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

Résolu Re: Script pour liste des membres [js]

Message par Chacha Jeu 23 Aoû 2018 - 9:29

memberlist_body - Script pour liste des membres [js] 8djze9qBonjour,

Nous n'avons plus de nouvelle de l'auteur de ce sujet depuis plus de 7 jours. Nous considérons donc ce problème comme résolu ou abandonné. La prochaine fois, merci de nous tenir au courant de l'évolution de votre problème, ou pensez à faire un UP régulièrement !

Ce sujet est archivé afin de ne pas perdre les réponses apportées.
Chacha

Chacha
Modéractif
Modéractif

Masculin
Messages : 69301
Inscrit(e) le : 21/08/2010

https://forum.forumactif.com/
Chacha 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