L’objectif
Quand on commence a utiliser le plugin Accès Restreint, la superposition des zones rend rapidement la situation un peu confuse....
On veut donc écrire un squelette qui permettra de voir une superposition des zones couvrant chaque rubrique de l’arborescence du site.
L’arborescence
La page squelette d’arborescence ci-dessous est déduite du squelette de Plan, en omettant l’affichage des articles : elle donne une vue plus synthétique de l’organisation de votre site.
- [(#REM) Fil d'Ariane ]
- <p id="hierarchie"><a href="#URL_SITE_SPIP/"><:accueil_site:></a>
- > <strong class="on"><:arbo_site:></strong></p>
- <!-- ZONE A CONTENUR -->
- <div class="contenu-principal">
- <div class="cartouche">
- <h1> Arborescence du Site </h1>
- <p> Si vous préférez, le <a href="#URL_PAGE{plan}">Plan détaillé du Site</a>,
- avec tous les titres d'Articles.</p>
- </div>
- <BOUCLE_secteurs(RUBRIQUES) {racine}{par titre}{tout}>
- <h2 class="h2"><a href="#URL_RUBRIQUE"
- [title="(#DESCRIPTIF|supprimer_tags|attribut_html)"]>
- <!-- <BOUCLE_articles_racine(ARTICLES) {id_rubrique}>
- [(#LOGO_RUBRIQUE||image_reduire{0,25}) - ]
- [(#TITRE|supprimer_numero|textebrut)]<br />
- </BOUCLE_articles_racine>"> [(#REM) fin du <A ] -->
- [(#LOGO_RUBRIQUE_NORMAL|image_reduire{0,20})]
- [(#TITRE|textebrut)] </a>
- </h2>
- <BOUCLE_ar_racine(ARTICLES){id_rubrique}></BOUCLE_ar_racine>
- #TOTAL_BOUCLE Articles</B_ar_racine>
- [(#REM) sous-rubriques ]
- <B_rubriques>
- <ul>
- <BOUCLE_rubriques(RUBRIQUES) {id_parent} {par num titre} {tout}>
- <li>
- <strong><a href="#URL_RUBRIQUE"
- [ title="(#DESCRIPTIF|supprimer_tags|attribut_html)"] >
- [(#TITRE|supprimer_numero|textebrut)]</a>
- [(#LOGO_RUBRIQUE_NORMAL||image_reduire{0,12})]
- [- (#LOGO_RUBRIQUE_SURVOL||image_reduire{0,12})]
- </strong>
- <B_articles>
- <ul>
- <BOUCLE_articles(ARTICLES) {id_rubrique}>
- [<li>(#REM)
- <a href="#URL_ARTICLE"
- [title="(#INTRODUCTION|supprimer_tags|attribut_html)"] >
- [(#TITRE|supprimer_numero|textebrut)]</a>
- </li>]
- </BOUCLE_articles>
- </ul>
- [(#REM)
- <p style="text-align:right"><small>#TOTAL_BOUCLE pages articles à consulter...
- modifications en (# _rubriques:DATE|affdate_mois_annee).</small></p>
- ]
- </B_articles>
- <BOUCLE_sous_rubriques(BOUCLE_rubriques)></BOUCLE_sous_rubriques>
- </li>
- </BOUCLE_rubriques>
- </ul>
- </B_rubriques>
- </BOUCLE_secteurs>
- <p> Vous préférerez peut-être voir la totalité des articles ?</p>
- <p> Consultez alors le <a href="#URL_PAGE{plan}">Plan détaillé du Site</a>,
- ou les <a href="#URL_PAGE{modifs}">dernières modifications</a>.</p>
- </div>
En utilisant cette page arbo, tirée du plan traditionnel de SPIP [1] -que vous pouvez voir en application sur ce site-, on peut facilement afficher les seules rubriques : on veut alors y adjoindre les zones d’accès restreint correspondantes...
Accéder à la table de liens
Les ZONES sont liées aux objets éditoriaux, par une table ZONES_LIENS, qui comme chaque table LIEN de SPIP3 comporte pour chaque id_zone (index identifiant l’objet initial)des lignes avec les deux champs normalisés :
- objet (varchar) : le nom de l’objet éditorial pointé
- id_objet (bigint(21)) : la valeur de clé de l’occurrence pointée
Ici cette table de liens met en relation avec chaque zone identifiée, des auteurs et des rubriques, les occurrences qui définissent la zone en référence.
Il semble facile d’afficher toutes les zones (en protégeant l’accès de façon réservée au Webmestre), et dans cette boucle, d’afficher chaque rubrique citée (avec ses dépendances en clair)... regardez bien !
- [(#AUTORISER{webmestre}|sinon{arbo})] <B_zone>
- <ul>Les Zones declarées couvrent :
- <BOUCLE_zone(ZONES)><li><b>#TITRE</b><br />
- <BOUCLE_rubzones(RUBRIQUES) {id_zone} {objet='rubrique'} >
- #PUCE #OBJET = #ID_OBJET <b>#INFO_TITRE{rubrique,#ID_OBJET} </b> #TITRE <br />
- <B_rubs>(<i><BOUCLE_rubs(RUBRIQUES){branche}{1,100}>
- [#ID_RUBRIQUE] #TITRE & </BOUCLE_rubs></i>)<br /></B_rubs>
- </BOUCLE_rubzones></li>
- </BOUCLE_zone>
- </ul>
- </B_zone>
La Boucle BOUCLE_rubzone
trouve ’magiquement’ les rubriques correspondantes, en utilisant des critères (ici {objet='rubrique'}
) sur des champs qui n’appartiennent pas à la table RUBRIQUES, ni d’ailleurs à la tables ZONES, mais uniquement à la table ZONES_LIENS qui n’a même pas à être indiquée [2] ; d’ailleurs le problème initial (qui a motivé la rédaction de cet article) était la surprise de ne pas arriver a faire reconnaître cette table ZONES_LIENS (sauf à l’écrire en table physique(spip_zones_liens)
!
Article publié le 24 juin 2016, et actualisé en février 2022 .
Répondre à cet article