1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

[CMS v1.8.1] Changer la "liste des membres" par "liste du staff"

Discussion dans 'Vos Codes/Scripts pour CraftMyWebsite' créé par Capdrake, 10 Février 2021.

MineStrator, Votre hébergeur de serveur minecraft
  1. Capdrake

    Capdrake Soldat

    4
    1
    3
    Bonjour,

    Voici un petit tutoriel ne nécessitant pas vraiment de compétences.

    Je vais essayer d'être le plus clair possible à travers ce tutoriel.
    Le but étant donc de vous permettre de changer l'affichage de la rubrique "Liste des membres" par un affichage de grade que vous sélectionnerez.

    Nous allons donc avoir besoin de modifier une requête SQL sur le code du CMS, et nous utiliserons la base de données pour prendre les grades désirés, et tester la requête.

    REMARQUE : Ce tutoriel fonctionne pour le thème par défaut. Il pourrait ne pas fonctionner sur certains thèmes comme celui de LoGuardiaN, le thème "ModernCraft". Contactez-moi si vous avez besoin de le faire sur ce thème là.

    Etape 1 : Prérequis

    Tout d'abord, vous aller vous noter les grades que vous souhaitez mettre dans cette liste. Dans ce tutoriel, nous afficherons les grades du STAFF. Donc notez ces grades sur un papier à côté de vous.
    Ensuite, allez sur votre hébergeur et accéder à votre base de données.
    Vous aurez besoin des tables "cmw_grades" afin de récupérer les id des grades, et de la table "cmw_users"

    Etape 2: Récupérer la requête SQL

    Nous allons maintenant chercher l'endroit où se trouve notre petite requête.
    Pour cela, allez dans votre ftp : httpdocs/modele/app/membres.class.php


    Nous allons ensuite aller dans la fonction nommée "getMembres($page = 1)". C'est ici que se trouve notre requête.
    La voici :
    $req = $this->bdd->query('SELECT id, pseudo, rang, tokens FROM cmw_users ORDER BY id ASC LIMIT '.$premierAffichage.', 20');
    C'est donc cette requête que nous allons modifier et changer.
    Pensez à faire une sauvegarde du fichier avant toute modification.

    Etape 3: Reprendre les id des grades, changer et tester la requête.

    Maintenant que vous avez votre requête, que vous avez les grades désirés, nous allons récupéré leurs id afin de les mettre dans notre requête.
    upload_2021-2-10_20-26-17.png

    Bien, vous avez vos id? Niquel, attaquons la requête !

    Donc, votre requête sélectionne actuellement tous les membres de votre site car elle n'a pas de critères particuliers de recherche. Là nous allons sélectionner les lignes que nous voulons grâce à la commande "WHERE".

    Nous allons donc la rajouter juste après le "FROM cmw_users". Vous allez mettre WHERE rang= 1 (si votre id est 1). Là vous sélectionnez tous les membres de votre site possédant le grade correspondant à l'ID 1. Mais du coup, nous ne sélectionnons qu'un seul grade... Donc, après le WHERE rang = 1, nous allons rajouter un "OR rang = 2" et ,nous le rajouterons autant de fois que nécessaire (en fonction du nombre de grades que vous souhaitez afficher).
    Cela devrait vous donner quelque chose du genre :
    $req = $this->bdd->query('SELECT id, pseudo, rang, tokens FROM cmw_users WHERE rang = 1 OR rang = 3 OR rang = 2 OR rang = 8 OR rang = 12 OR rang = 13 OR rang = 14 OR rang = 17 ORDER BY rang ASC LIMIT '.$premierAffichage.', 20');
    (J'ai remplace id par rang après le "ORDER BY" afin de trier l'affichage par le rang.)

    Nous allons maintenant tester notre requête. Nous allons donc l'extraire de tout ce petit bordel : vous allez donc sélectionner la requête en partant du "SELECT" en allant jusqu'au "ASC". Le reste, on ne touche pas !
    Cela devrait vous donner :
    SELECT id, pseudo, rang, tokens FROM cmw_users WHERE rang = 1 OR rang = 3 OR rang = 2 OR rang = 8 OR rang = 12 OR rang = 13 OR rang = 14 OR rang = 17 ORDER BY rang ASC

    Testez cette requête, si cela vous convient, vérifier que vous avez bien changé la requête du code, et enregistrez le fichier. Normalement, dans votre page liste des membres, les personnes avec le grade contenu dans la requête sont affichés. Et voilà :)

    Etape 4 : Changer la phrase

    Pour cela, allez dans : httpdocs/theme/default/pages/membres.php

    Et changez les phrases que vous voulez, ça je vous laisse gérer. :)


    Et voilà, vous affichez désormais une liste triée ! J'ai essayé d'être le plus clair possible en particulier pour ceux ne connaissant rien en développement (on vous en veut pas, ou juste un peu...)

    N'hésitez pas à me contacter sur discord si vous avez besoin d'aide ;) ! Pseudo : CapDRAKE



    Cdt | CapDRAKE
     
    • J'aime J'aime x 1
  2. ThomasMrFlamme26

    ThomasMrFlamme26 Soldat

    3
    4
    3
    Hello, je viens rajouter un peu de contenu à cette modification, il existe un moyen plus simple de prendre en charge une liste de rang dans la requête SQL.

    On peut donc remplacer ta requête :
    Code:
    SELECT id, pseudo, rang, tokens FROM cmw_users WHERE rang = 1 OR rang = 3 OR rang = 2 OR rang = 8 OR rang = 12 OR rang = 13 OR rang = 14 OR rang = 17 ORDER BY rang ASC
    Par cette requête :
    Code:
    SELECT id, pseudo, rang, tokens FROM cmw_users WHERE rang IN (1, 2, 3, 8, 12, 13, 14, 17) ORDER BY rang ASC
    Pour ceux qui auraient du mal, on vient simplement remplacer les tests sur l'ID du rang par une liste ou l'on va directement venir rechercher les éléments qui ont un ID présent dans cette liste. C'est plus rapide, plus simple et plus "propre".

    On conservera donc le tri par niveau de rang, du plus ancien au plus récent.
    En revanche, le tri sera également fait par ID. Je m'explique.

    Créateur 1 : Zoé
    Créateur 2 : Alban
    Créateur 3 : Thomas
    Modérateur 1 : Kévin
    Modérateur 2 : Bastien

    Ca c'est ce qu'on aura avec le tri UNIQUEMENT sur le rang de manière ascendante (ASC).

    Si on veut trier par rang mais AUSSI par nom, on peut le faire avec la requête suivante :
    Code:
    SELECT id, pseudo, rang, tokens FROM cmw_users WHERE rang IN (1, 2, 3, 8, 12, 13, 14, 17) ORDER BY rang, pseudo ASC
    Nous obtiendrons donc :
    Créateur 2 : Alban
    Créateur 3 : Thomas
    Créateur 1 : Zoé
    Modérateur 2 : Bastien
    Modérateur 1 : Kévin

    (Le numéro après le rang étant l'ID de l'utilisateur)

    Si vous avez des questions, n'hésitez pas à me contacter.
     

Partager cette page

Chargement...