Remarque : cette contrib est le produit d’un stage de formation à la création de boucles et plus précisément à leur intégration en fichier externe. Les explications sont reproduites ’in-extenso’ même si cela alourdit l’article, l’idée c’est qu’elle puisse aussi servir de tutoriel (?). (Pour les lecteurs pressés, voir la fin de la partie 2 pour récupérer le zip contenant inc-chemin.php3 et inc-chemin.html)
1) La synthèse de l’existant :
En mélangeant les différentes boucles proposées dans les commentaires on pourrait synthétiser le tout avec cette boucle :
La subtilité c’est d’adapter la définition de BOUCLE_rubrique_hierarchie en fonction du type de page qui contient cette boucle :
Quoiqu'il en soit, ces 2 boucles appliquées aux pages rubriques, brèves et articles permettent d'avoir le résultat suivant (on suppose par exemple l'arborescence suivante /partie1/partie1.1/partie1.1.1/ pour l'article id=25) :
- sur la page de la rubrique de la partie1.1.1 (rubrique.php3?id_rubrique=7) on obtient : Nom_site_SPIP >> partie1 >> partie1.1 Nom_site_SPIP >> partie1 >> partie1.1 >> partie1.1.1 La logique de l’affichage est donc respectée : le chemin indiqué correspond bien toujours exactement au chemin de la rubrique parent de la page affichée :) Mais si l’on souhaite au contraire que sur la page de la rubrique1.1.1 il soit affiché :
Nom_site_SPIP >> partie1 >> partie1.1 >> partie1.1.1
(même si ce n’est pas la logique courante au niveau du chemin affiché, chacun fait ce qu’il lui plait :) alors on utilise id_article dans les pages rubriques (on profite donc du même genre "d’effet de bord" que pour les brèves) la démo de cette version est visible ici :
http://www.aix-mrs.iufm.fr/formatio... L’idée c’est, bien-sûr, d’arriver à fabriquer la paire de fichiers inc-chemin.html + inc-chemin.php3 que l’on pourrait INCLURE dans le squelette des pages article.html, rubrique.html et breve.html ce qui facilitera grandement la maintenance, l’habillage et les évolutions du code de cette boucle Il suffit donc de créer 3 boucles sur le modèle de la boucle élémentaire vue dans le 1) et de les imbriquer selon le schéma suivant : On obtient donc un résultat valide quelque soit le type de page dans laquelle va "tourner" cette boucle :
Nom_site_SPIP >> partie1 Nom_site_SPIP >> partie1 >> partie1.1 >> partie1.1.1 Nom_site_SPIP >> partie1 >> partie1.1 Pour rendre le truc encore plus facilement configurable on va le doter d’une feuille de style simple mais efficace (qui pourra/devra être intégrée à la feuille de style du squelette), ce qui peut donner un code total du style : Utilisation : A priori, dans les pages article.html, rubrique.html et breve.html, le plus simple est d’afficher le chemin juste avant le contenu principal de la page. Ce qui sur une 1.8.2 standard donne : Cette contrib est également proposée comme un exemple de mise en pratique des concepts développés dans la contrib de Mortimer et noé de naama (numéro 817) Vu le caractère expérimental de cette partie, vous la trouverez sur le spikini de spip-contrib : http://www.spip-contrib.net/spikini... [1] Le fichier xml correspondant à cet exemple
si c’est un article le paramètre sera id_article
si c’est une rubrique, ce sera id_rubrique
pour les brèves, on triche un peu (puisque HIERARCHIE ne peut utiliser id_breve) mais ça fonctionne en utilisant id_article (j’imagine que
sur la page de l’article 25 (article.php3 ?id_article=25) on obtient :2) L’optimisation proposée : une seule boucle valide pour les 3 types de pages (articles, rubriques, breves)
si c’est une breve (breve.php3 ?id_breve=2) la boucle [code boucle elementaire 1]id_article retourne le chemin du secteur qui contient la breve, les 2 autres boucles ne s’éxecutent pas donc résultat du style :
si c’est un article (article.php3 ?id_article=25) la boucle BREVES initiale échoue, la boucle ARTICLES qui suit est éxécutée, la boucle RUBRIQUES n’est pas appellée ; on récupère donc le chemin de la rubrique qui stocke l’article :
si c’est une rubrique (rubrique.php3 ?id_rubrique=7), les 2 premières boucles échouent, la boucle RUBRIQUES retourne alors le chemin de sa rubrique parent, ce qui donne :
remarquez que le fait de passer les 3 paramètres id_article id_breve id_rubrique à INCLURE permet de le rendre fonctionnel quelque soit le type de page de squelette dans laquelle il est appellé.3) To do :
modification de la boucle élémentaire pour que le dernier élément (la rubrique qui contient la page en cours) puisse avoir un style particulier4) Prospective : "Mortimérisation" de cette contrib : utilisation d’une balise #POSE


























