Gestion d'une Entete par Groupe de Pages par GouBs
L'idée de départ
Je pense qu'il serait assez facile de gérer des
entetes et/ou pied de page pour les pages wikini. Cela permettrait différentes fonctions comme avoir des informations générales à un ensemble de pages, faire un mini menu pour un groupe de pages,...
La méthode que je propose est assez simple. Pour le groupe de pages considéré on utiliserait des définitions de mots Wiki comme
Amelioration
Introduction,
Amelioration
Objet,
Amelioration
Description,
Amelioration
Conclusion. Le nom de la page définissant l'entête serait de la forme
Amelioration
Entete
Page (idem pour le pied de page). Jusque la pas de modification dans le code.
La seule modification à mettre en place serait de tester au moment du chargemment de la page s'il existe une page d'entete associée (
Premier mot du nom de la page +
Entete
Page). Si oui il suffit alors de mettre une action
include au debut du contenu de la page. Il faudra aussi faire attention de ne pas sauvegarder cette
include dans le contenu de la page.
Cette fonction ne necessite pas une grosse modification du code et surtout elle ne complique pas l'utilisation de Wikini. Seulement une regle de syntaxe à connaitre (
et qui ne nuit en rien si on ne la connait pas). Je pense qu'elle peut apporter une meilleur structuration des pages.
Nota : c'était l'idée de départ mais un peu de réflexion a permis de simplifier la mise en oeuvre. Entete_EntetePage
Description
Le but de ce développement est de pouvoir associer une entête à un groupe de pages.
Comme un exemple est toujours plus parlant on va considérer un projet "
Festival". Les pages correspondant à ce projet pourraient s'appeler "
Festival Objectif", "
Festival Contenu", "
Festival Resultat", ... La page d'entête s'appelerait "
FestivalPageEntete".
La page d'entête permet de regrouper un ensemble d'informations communes aux différentes pages du projet. Ce peut être par exemple
un menu de navigation à l'intérieur des différents éléments du projet.
Nota : cette page est construite suivant cette méthode. Le nom du projet est "Entete", la page de menu est "EnteteEntetePage" et il y a des pages comme "Entete Description", "Entete Code", ect...
Tout ce qui est valable pour l'entête peut aussi être appliqué comme Pied de Page en utilisant la dénomination "PiedPage"
La démo est Ici
La méthode
La méthode retenue à l'avantage de la simplicité.
Il y avait plusieurs possibilités pour faire cette implémentation. Je pense avoir retenu une des plus simples. Ecrire une fonction qui construise le nom de la page d' entête pour une page demandée, vérifie si cette page existe et retourne le contenu de la page formattée. Il suffit ensuite d'afficher ce contenu avant le "body" de la page elle même dans le handlers d'affichage (show.php).
Dans le cas du moteur wikini que j'utilise et que j'ai modifié pour optimiser le traitement des requetes SQL, je dois aussi prendre en compte la gestion du contenu de la page. Je rajoute le contenu de la page d'entête à la fonction qui test la définition ou pas des mots Wiki. Cela est fait dans la fonction "
Ctrl_Mot_Wiki_Defini" que j'ai rajoutée à la class Wiki lors de la modification concernant les optimisation de requetes SQL. voir Requetes_SQL.
J'ai rajouté le même type de traitement pour le pied de page. J'ai aussi fait évoluer la notion Entete et Pied de page en y introduisant une notion de niveau de regroupement. L'exemple ci dessous illustrera mieux qu'un long discours :
- Nom du projet = Festival decoupé en trois chapitres
- Festival_EntetePage (commun à l'ensemble du projet)
- Festival_PiedPage (commun à l'ensemble du projet)
- Festival_Presentation
- Festival_ Organisation
- Festival_ Partenaires
- Festival_Presentation_Edito
- Festival_Presentation_Lieu
- Festival_Presentation_Deroulement
- Festival_Presentation_EntetePage (commun au chapitre Présentation)
- Festival_Presentation_PiedPage (commun au chapitre Présentation)
- ...
Le Codage
la premiere version du code à permis de tester le principe. Les version suivantes sont des améliorations de la version de base.
- Version initiale = version de base c'est ici
- Version 2 = apporte la notion de pied de page et de niveau de regroupement de pages Ici
Les commentaires sur ce projet
- Pour l'instant je ne vois que des avantages à cette modification : les modifs de code sont mineures, le mode d'utilisation de Wikini reste le même, l'apprentissage de la syntaxe pour gérer l'entête par groupe de page est facile à retenir sans être obligatoire. --GoubS.
Les évolutions
- Pour l'instant l'entête que j'utilise comme menu doit être fait avec des liens forcés pour ne pas voir le nom du projet qui se répète sans cesse (Entete Evolution, Entete Code, Entete Description,...). Il serait peut etre interressant de pouvoir mettre simplement la deuxieme partie du mot wiki et de faire définir la premiere partie par le système. Inconvénient la page d'entête ne serait plus une page comme les autres ! à voir et réfléchir ... --GoubS