Afficher un ou plusieurs modules du portail sur d'autres pages de son forum

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).

  • Note : Avoir des notions d'HTML peut faciliter l'obtention d'un résultat viable, pour cela vous pouvez visiter le Site du Zéro

Préparatifs

Liste des modules de base du portail

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
NewsletternewsletterPermet l'inscription/désinscription aux newsletters ainsi que leur envoi
NewsnewsPermet l'affichage des dernières news de votre forum
AccueilhomePermet d'afficher un texte d'accueil au membre
Derniers messageslast_postsPermet d'afficher les derniers messages postés sur le forum
RecherchesearchPermet d'effectuer une recherche sur le forum ou des moteurs de recherche externes
Qui est en lignewhoisonlinePermet 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.

Pour ce qui est des modules additionnels

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 :

  • Accédez au répertoire /main/portail de votre forum (par FTP ou le WebFTP du panneau d'administration de votre forum)
  • Regardez les noms de fichiers disponibles, vous trouverez portail.php et des fichiers nommés portail_xxxxxx.php
  • xxxxxx correspond au nom “interne” du module, il vous suffit de trouver celui dont le nom “interne” correspond au nom “humain” du module (par exemple un module “Horloge” pourrait avoir comme nom interne “clock”)

Modification des fichiers

1ère partie : Déterminer la page où afficher le module

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

Pour ajouter un module sur toutes les pages du forum

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 :

  • le header du forum ou “en-tête”
  • le corps du forum
  • le footer du forum ou “pied de page”

Or seul le header et le footer sont affichés sur toutes les pages.

Dans ce cas de figure les fichiers à modifier sont :

  • index.php
  • /tpl/votreThème/files/header.html pour le header ou /tpl/votreThème/files/footer.html pour le footer

Pour ajouter un module sur une page du forum

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 :

  • /main/forum/forum_xxxxxxxx.php
  • /tpl/votreThème/files/forum/forum_xxxxxxxx.html

Pour ajouter un module sur quelques pages du forum

Il suffit de répéter la procédure pour ajouter un module sur une page du forum sur chaque page. ;-)

2ème partie : Modifier le code source du forum

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.

Le fichier PHP

Afficher le module sur toutes les pages

  • Ouvrez le fichier index.php et trouvez le code suivant (aux alentours de la ligne 290 sur un forum non modifié) :
		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'));
		}
  • Ajoutez ensuite le code suivant en prenant soin de modifier xxxxx par le nom interne du module :
		//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');			
		}
  • Enregistrez le fichier.

Afficher le module sur une page du forum

  • Ouvrez le fichier main/forum/forum_xxxxxxx.php (en remplaçant xxxxxxx par le nom interne de la page à modifier)
  • Cherchez le code suivant :
	/*
	** Constructeur
	*/
	public function main()
	{
  • Ajoutez ensuite le code suivant en prenant soin de modifier xxxxx par le nom interne du module :
			//Instance de la classe Portail
			$portail = new Portail();
 
			//On ordonne l'execution du code PHP du module souhaité
			$portail->output_module('xxxxx');
	
  • Enregistrez le fichier.

La template

Afficher le module sur toutes les pages

  • Ouvrez le fichier /tpl/votreThème/files/header.html ou /tpl/votreThème/files/footer.html suivant votre choix
  • Ajoutez ensuite le code suivant en prenant soin de modifier xxxxx par le nom interne du module à l'endroit où vous souhaitez voir apparaître le module (faîtes quelques essais au hasard pour vous repérer si nécessaire):
<switch name="module_portail_xxxxx">
	<include name="portail/portail_xxxxx.html" />
</switch>
  • Enregistrez le fichier.

Afficher le module sur une page du forum

  • Ouvrez le fichier /tpl/votreThème/files/forum/forum_xxxxxxxx.html (en remplaçant xxxxxxxx par le nom interne de la page à modifier)
  • Ajoutez ensuite le code suivant en prenant soin de modifier xxxxx par le nom interne du module à l'endroit où vous souhaitez voir apparaître le module (faîtes quelques essais au hasard pour vous repérer si nécessaire):
<include name="portail/portail_xxxxx.html" />
  • Enregistrez le fichier.

Quelques astuces permettant d'afficher le module en fonction de l'utilisateur

Uniquement les membres ou les visiteurs

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.

Uniquement aux administrateurs/modérateurs globaux

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.

Conclusion

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

 
fsb2/modif/portalmodsonotherpages.txt · Dernière modification: 01:49 27/11/2007 par 81.244.237.61
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki