Les commandes sont pour le moment fermées jusqu'à nouvel ordre, mais je peux assurer le support.
Merci de votre compréhension.
Requests are currently closed, but I can do some support.
Thanks for your understanding.
Important links - Liens importants
Règles - Rules | Présentez-vous - Introduce yourself | Problème d'inscription ? - Registration problem ?
Ishimaru-Design > Tutoriaux, ressources et support (fr) > FluxBB 1.4 > Tutoriels > [fluxbb] Derniers sujets sur son site
Ishimaru Chiaki | #1 10/08/2011 - 18h35 |
Class : ID Admin |
Vous êtes en train de faire un site utilisant les sessions de votre forum FluxBB, et vous aimeriez bien afficher les 10 dernères réponses dans le menu latéral du site ?
Ce tutoriel va vous montrer à insérer ce module sur votre site. Prérequis Tout d'abord, vous devez absolument avoir inclus le fichier common.php du forum avant l'entête de votre site. Pour cela, suivez cette page de documentatiion de FluxBB.fr. Création du fichier Commencez d'abord par créer le nouveau fichier qui contiendra le code (lastposts.php), puis incluez-la où vous le voulez (menu latéral, accueil, etc.) <?php include('include/lastposts.php'); ?> (faites de préférence un dossier spécifique pour les différents fichiers inclus de votre site, ça fait plus rangé) Pour la suite, je donnerai les codes en fonction d'un affichage dans un menu latéral. Vous n'avez qu'à adapter le code HTML pour vos besoins. Aussi, même si j'utilise un système de clés de langue sur mon site, je donnerai les codes avec les textes en dur. Libre à vous de les rendre localisables comme je le fais. Code de base On commence avec le code de base, à mettre dans votre fichier : <div class="submenu"> On a donc notre bloc, avec le titre et la liste à puces... qui n'a pas de puces pour le moment, mais ça va venir. La constante Afin de pouvoir changer plus facilement le nombre de réponses, par exemple pour en avoir 5 au lieu de 10, on va définir une constante, de cette façon : define('PUN_REPLIES',10); Il ne restera qu'à insérer cette constante dans les requêtes qui viendront par la suite. Vous n'avez qu'à changer le nombre si vous voulez un nombre différent de 10 (ex: 5 ou 20) la condition Maintenant, puisque vous avez sûrement des sujets qui ne sont pas visibles aux invités, voire à certains groupes, il vous faudra vérifier le statut de l'utilisateur. Puisque l'administrateur a accès à tous les sujets, on va donc vérifier si l'utilisateur est administrateur du forum, en utilisant la variable utilisateur $pun_user['g_id'] avec la constante PUN_ADMIN, dans une condition if...else : if($pun_user['g_id'] != PUN_ADMIN) { Vous le placez après la ligne de la constante. Cela vous donnera ceci, jusqu'ici : <div class="submenu"> On est prêt à mettre du gras dans nos conditions ! Les requêtes Note : Puisque la requête finale va varier selon plusieurs paramètres, je vais utiliser une variable pour stocker la requête, afin de ne la lancer véritablement qu'une fois les vérifications terminées. Puisqu'un utilisateur qui n'est pas admin peut ne pas avoir accès aux sujets de certains forums, on doit d'abord connaître les forums à exclure, ce qui fait que dans la première partie de notre condition, on va d'abord faire une première requête pour récupérer les forums ayant la permission de lecture à 0 pour son groupe. Une boucle permet ensuite de récupérer le tout sous forme d'un tableau. $req = $db->query('SELECT id Mais puisqu'il se peut qu'il n'y ait pas de forum à exclure, on doit vérifier le nombre de clés dans le tableau résultant. Pour cela, on va utiliser la fonction count() dans une condition : if(count($ids) > 0) { Dans le cas où l'on doit exclure des forums, on doit ajuster la requête pour exclure les sujets se trouvant dans lesdits forums. $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id Vous vous rappelez de la constante PUN_REPLIES au début ? Cela vous évite d'avoir à fouiller au coeur des requêtes juste pour changer le nombre de réponses à afficher. Ensuite, vous remarquerez le NOT IN ('implode(',',$ids.') dans la troisième ligne. C'est là que s'effectue le tri pour exclure les sujets inaccessibles à l'utilisateur. Et puisque NOT IN doit travailler avec une chaîne de caractères en utilisant la virgule comme séparateur, il suffit d'utiliser la fonction implode() pour "aplatir" notre tableau ! Maintenant, s'il n'y a rien à exclure, on n'a qu'à refaire la requête, sans la troisième ligne. Cette requête est la même quand la première requête ne retourne aucun forum à exclure et quand l'utilisateur est admin. $sql = 'SELECT id,subject,num_replies,last_post,last_post_id,last_poster,forum_id Voici ce que ça donne jusqu'ici : <div class="submenu"> Maintenant, il ne nous reste plus qu'à s'occuper de l'affichage. Affichage des réponses On est maintenant rendu au meilleur, soit l'affichage des réponses en tant que tel ! Puisqu'on n'a fait que préparer la requête, on va maintenant la lancer, et faire notre boucle pour récupérer tout ça : $result = $db->query($sql) or error('Unable to fetch replies list', __FILE__, __LINE__, $db->error()); Mais avant de tout afficher, je vous rappelle que si un sujet contient beaucoup de messages, il fera plusieurs pages. Or, le nombre de messages par page peut varier selon les préférences de l'utilisateur (si l'utilisateur est enregistré) et selon la valeur par défaut définie dans le panneau d'administration, pour les invités. Pour cela, on va vérifier si le variable utilisateur $pun_user['disp_posts'] est vide ou non, en utilisant une condition. //On vérifie si la valeur de notre variable de préférence existe J'ai simplifié les variables pour ne pas avoir des variables à rallonge au moment de l'affichage. On termine finalement avec l'affichage final, où l'on calcule la page de la réponse en même temps ! //On affiche tout ! Le rel="nofollow" sert à indiquer aux moteurs de recherche de ne pas indexer ces liens, afin de prévenir les duplications de contenu. Résultat final Voici ce que ça donne au final : <div class="submenu"> Il ne vous reste plus qu'à styler le tout avec du CSS ! |
Ishimaru-Design > Tutoriaux, ressources et support (fr) > FluxBB 1.4 > Tutoriels > [fluxbb] Derniers sujets sur son site
> Stats
1 user(s) connected during the last 10 minutes (0 member(s) and 1 guest(s)).
Connectix Boards (fr) | phpBB.com | phpBB-fr.com | phpBB.biz | phpBB3styles | phpBBHacks | Awesomestyles | Le site du zéro | Servhome | Gimp-Attitude | Phobies-Zéro | Expomatique
Powered by Connectix Boards 0.8.4 © 2005-2012 (7 queries, 0.046 sec)