Certains modules du portail peuvent être intéressants à afficher sur d'autres pages du forum que ce soit par pure envie d'avoir les derniers messages postés affichés sur toutes les pages du forum, ou juste pour afficher les dernières news sur l'index du forum afin d'avertir ceux qui n'ont pas le réflex d'aller sur le portail.
Jusqu'à la version RC5, il fallait quelques manipulations hasardeuses pour disposer des modules du portail sur d'autres pages, dorénavant il suffit de connaitre le nom interne du module et de la page où celui-ci doit s'afficher.
L'article qui suit à pour but de vous permettre de comprendre un peu comment ça marche plutôt que de vous proposer des portions de code à copier, il convient donc de le lire du début à la fin plutôt que de sauter aux endroits où du code est affiché et ensuite demander de l'aide sur le forum. Une fois cet article lu, vous saurez mettre n'importe quel module du portail sur n'importe quel page du forum (ou presque).
Ils sont au nombre de 6, pour chaque module il est vous est donné le nom “humain” du module, son nom “interne” à FSB2, et une courte description.
| Nom “humain” | Nom “interne” | Description |
|---|---|---|
| Newsletter | newsletter | Permet l'inscription/désinscription aux newsletters ainsi que leur envoi |
| News | news | Permet l'affichage des dernières news de votre forum |
| Accueil | home | Permet d'afficher un texte d'accueil au membre |
| Derniers messages | last_posts | Permet d'afficher les derniers messages postés sur le forum |
| Recherche | search | Permet d'effectuer une recherche sur le forum ou des moteurs de recherche externes |
| Qui est en ligne | whoisonline | Permet d'afficher les statistiques du forum ainsi que les personnes connectées |
Note : Tous les modules sont configurables via la page “Portail” du panneau d'administration.
Dans le futur il est fort probable que de nouveaux modules pour le portail apparaîtront, la procédure sera la même que pour les modules de base, il vous faut juste déterminer leur nom “interne”.
La méthode est simple :
Il vous faut définir sur quelle page vous souhaitez afficher le module, vous pouvez le faire afficher sur toutes les pages en l'incrustant dans l'en-tête du forum par exemple, ou seulement l'afficher sur l'index du forum ou en haut des sujets.
Il faut savoir que sur FSB les données sont traitées indépendamment de leur structure d'affichage, pour modifier une page il vous faut donc généralement modifier un fichier .php et un fichier .html (dit “template”, qui contient le code HTML pour structurer les données). Ainsi dans le fichier .php nous allons rechercher les données que l'on souhaite afficher, et celles-ci seront structurées dans le fichier.html afin qu'elles soient affichées à l'endroit voulu, sous la forme voulue.
Il vous faut donc savoir le nom des deux fichiers qui correspondent à la page sur laquelle vous voulez rajouter votre module
Dans ce cas votre module devra être en tête ou en pied de la page car FSB2 génère ses pages a partir de trois entités distinctes :
Or seul le header et le footer sont affichés sur toutes les pages.
Dans ce cas de figure les fichiers à modifier sont :
Il vous faut ici déterminer le nom interne de la page à modifier, c'est en fait plus simple que pour le nom interne du module, il vous suffit d'ouvrir votre navigateur sur la page où vous voulez introduire un module, et de regarder l'url de la page dans la barre d'adresse, elle sera de la forme : http://www.monsite.com/forum/index.php?p=xxxxxxxx(et éventuellement d'autres paramètres).
xxxxxxxx est le nom interne de la page que vous souhaitez modifier.
Alors les fichiers à modifier sont :
Il suffit de répéter la procédure pour ajouter un module sur une page du forum sur chaque page.
Maintenant il vous faut modifier le code source du forum pour que ça marche, vous savez le nom interne du module, le nom du fichier PHP à modifier, ainsi que le nom du fichier template à modifier.
Notez que par la suite quand il vous est demander d'ouvrir un fichier, il faut ouvrir celui-ci dans un éditeur de texte étant doté d'un colorateur syntaxique afin de vous faciliter la lecture et enregistrer les fichiers correctement. Les linuxiens sauront quoi choisir, pour ceux qui sont sous windows je vous conseille Notepad++ car le bloc note de windows est à proscrire. En effet ce dernier ne gère pas correctement le format UTF-8 ce qui pourrait vous poser des problèmes plus tard, veillez donc toujours à enregistrer vos fichiers au format UTF-8 (sans signature (BoM)). Par ailleurs avant de modifier les fichiers, sauvegardez-les en cas de problème.
if (Fsb::$cfg->get('total_unaproved') > 0) { $modo_have_message = ($modo_have_message) ? sprintf(Fsb::$session->lang('modo_have_abuse_aprove'), Fsb::$cfg->get('total_abuse'), Fsb::$cfg->get('total_unaproved')) : sprintf(Fsb::$session->lang('modo_have_aprove'), Fsb::$cfg->get('total_unaproved')); }
//Ajout d'un module si l'on est pas sur la page du portail if($this->frame_page != 'portail') { //Instance de la classe Portail $portail = new Portail(); //On ordonne l'execution du code PHP du module souhaité $portail->output_module('xxxxx'); //On active l'affichage du module Fsb::$tpl->set_switch('module_portail_xxxxx'); }
(en remplaçant xxxxxxx par le nom interne de la page à modifier) /*
** Constructeur
*/
public function main()
{
//Instance de la classe Portail $portail = new Portail(); //On ordonne l'execution du code PHP du module souhaité $portail->output_module('xxxxx');
<switch name="module_portail_xxxxx"> <include name="portail/portail_xxxxx.html" /> </switch>
(en remplaçant xxxxxxxx par le nom interne de la page à modifier)<include name="portail/portail_xxxxx.html" />
Dans le fichier template il vous suffit d'englober le code rajouté par les balises <switch name=“is_logged”> et </switch> pour afficher le module aux membres uniquement OU d'englober le code rajouté par les balises <switch name=“is_not_logged”> et </switch> pour afficher le module aux visiteurs uniquement.
Dans le fichier template il vous suffit d'englober le code rajouté par les balises <switch name=“is_admin”> et </switch> pour afficher le module aux administrateurs et modérateurs globaux uniquement.
Voilà, maintenant vous devez être capable d'ajouter un module du portail là où vous le souhaitez sur le forum, vous venez peut-être même de finir, il ne vous reste alors plus qu'a tester.
Contributeur : BlackJowy