Accueil > Recettes Techniques > SPIP > SPIP : Analyse d’une metastructure de la DIST

SPIP : Analyse d’une metastructure de la DIST

mercredi 26 septembre 2007, par Julien Falconnet

Le jeu de squelettes par défaut de SPIP (appelé DIST) est riche en possibilités. Il est souvent possible d’obtenir exactement la présentation de vos rêves, avec quelques modifications seulement. Encore faut-il savoir où aller faire ces modifications et savoir en anticiper les effets secondaires. Pour cela il est nécessaire de voire clairement comment sont constitués les principaux squelettes.

 Objectif

Il s’agit de mieux comprendre la structure générale des squelettes de la DIST, en distinguant les constructions communes et les différences.

 Méthode

On se restreint aux principaux squelette et on cherche les éléments communs pour essayer de dégager une meta-structure commune à tous. Ensuite on s’intéresse aux parties variantes et particulières de chaque page. Cette analyse porte sur SPIP 1.9.2.

Les squelettes étudiés sont les plus communs : sommaire, rubrique, plan, forum, site.

 Structure générale

#CACHE{...}
... "parfois une mention de boucle"
<!DOCTYPE ...
<html...

<head>
<title>[(#NOM_SITE_SPIP|textebrut)]</title>

[<meta name="description" content=...
<INCLURE{fond=inc-head}>
</head>

<body class="...">
<div id="page">
[(#REM) Entete de la page + titre du site ]
<INCLURE{fond=inc-entete}>
[(#REM) Fil d'Ariane ]
<div id="hierarchie">
...
</div>
<div id="conteneur">
...
<div id="contenu">
...
</div><!-- fin contenu -->
[(#REM) Menu de navigation par rubriq
<INCLURE{fond=inc-rubriques}> ...
...
</div><!-- fin navigation -->
</div><!-- fin conteneur -->


[(#REM) Pied de page ]
<INCLURE{fond=inc-pied}{skel=#SQUELETTE}>
</div><!-- fin page -->

</body>
</html>

... "parfois la fin de la boucle de tete"

 Tableau de variations

Ce tableau propose une vision synthétique des constantes et des variation dans les squelettes. Une première colonne présente les constantes, les autres indiquent les variantes pour chaque squelette.

ConstantesVariations
#CACHE...sommaire :

rubrique : #CACHE7200

article : #CACHE86400

plan : #CACHE7200

forum : #CACHE3600
#HTTP_HEADER"Cache-Control : max-age=3600, must-revalidate"

site : #CACHE7200

sommaire : -

rubrique :<BOUCLE_rubrique_principal(RUBRIQUES) {id_rubrique}>

article :<BOUCLE_article_principal(ARTICLES) {id_article}>

plan : -

forum : -

site :<BOUCLE_site(SITES){id_syndic}>

<!DOCTYPE...
<html dir="#LANG_DIR" lang="#LANG">sommaire :

rubrique : -

article : -

plan : -

forum : -

site :

[(#REM) Les sites n'ont pas de "lang" a proprement parler
<BOUCLE_lang(RUBRIQUES){id_rubrique}><br><html dir="#LANG_DIR" ...
<head>
<title>...</title>sommaire : <title>[(#NOM_SITE_SPIP|textebrut)]</title>       

rubrique :<title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title>

article :<title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title>

plan :<title><:plan_site:> - [(#NOM_SITE_SPIP|textebrut)]</title>

forum :<title><:poster_message:> - [(#NOM_SITE_SPIP|textebrut)]</tit

site :<title>[(#NOM_SITE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]

sommaire :[<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|cou

rubrique :[<meta name="description" content="(#INTRODUCTION|couper{150}

article :[<meta name="description" content="(#INTRODUCTION|couper{150}

plan :[<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|cou

forum : -

site :[<meta name="description" content="(#DESCRIPTIF|couper{150}|t

<INCLURE{fond=inc-head}>sommaire :

rubrique :

article :

plan :

forum :

site :

<body class="...">sommaire :<body class="page_sommaire">

rubrique :<body class="page_rubrique">

article :<body class="page_article">

plan :<body class="page_plan">

forum :<body class="page_forum">

site :<body class="page_site">

<div id="page">sommaire :

rubrique :

article :

plan :

forum :

site :

[(#REM) Entete de la page + titre du site ]
_ <INCLURE{fond=inc-entete}>
sommaire :

rubrique :

article :

plan :

forum :

site :

[(#REM) Fil d'Ariane ]
_ <div id="hierarchie">...</div>
sommaire :<div id="hierarchie"><:accueil_site:></div>

rubrique :<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accu

article :<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accu

plan :<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accu

forum :voire source

site :<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accu

<div id="contenu">...</div>sommaire :
[(#REM) Les deux derniers articles ]
...
[(#REM) Articles suivants ]
...<div class="contre-encart">         ....</div>...
<div class="encart">
[(#REM) Breves ]
... <div class="breves"> ...
[(#REM) Liens des forums ]
... <div class="forums"> ....
[(#REM) Sur le Web ]
... <div class="syndic"> ....
</div><!-- fin encart -->

rubrique :

<div class="cartouche">
...
<div class="#EDIT{texte} chapo">
...
<div class="contre-encart">
[(#REM) Articles de la rubriq
...
<div class="rubriques">
...
[(#REM) Documents joints a la
...
</div><!-- fin contre-encart -->
...
<div class="encart">
[(#REM) Breves du secteur ]
<div class="breves">
...
[(#REM) Sites de la rubrique
<div class="syndic">
...
[(#REM) Proposer un site ]
#FORMULAIRE_SITE
</div><!-- fin encart -->

article :

<div class="cartouche">
...
<div class="#EDIT{chapo} chapo">
...
<div class="#EDIT{texte} texte">
...
[(#REM) Portfolio : album d'images ]
...
<BOUCLE_afficher_document(DOCUMENTS)
...
[(#REM) Autres documents joints...
...
[(#REM) Petition...
...
[(#REM) Forum de l'article ]
...

plan :

<div class="cartouche">
...
[(#REM) Articles et sous-rubriques
...
<div class="encart">
...
[(#REM) Breves ]
...
[(#REM) Sur le Web ]
...
</div><!-- fin encart -->
...

forum :

<div class="cartouche">
...
<BOUCLE_forum_parent
...
<BOUCLE_article
...
<BOUCLE_breve
...
<BOUCLE_rubrique
...
#FORMULAIRE_FORUM
...

site :

<div class="cartouche">
...
[(#REM) Articles issus de la syndicat
...
</div><!-- fin contenu -->sommaire :

rubrique :

article :

plan :

forum :

site :

[(#REM) Menu de navigation laterale ]
<div id="navigation">
sommaire :

rubrique :

article :

plan :

forum :

site :

[(#REM) Menu de navigation par rubriq
<INCLURE{fond=inc-rubriques}>...
sommaire : -

rubrique :<INCLURE{fond=inc-rubriques}{id_rubrique}

article :<INCLURE{fond=inc-rubriques}{id_rubrique}

plan : -

forum : -

site :<INCLURE{fond=inc-rubriques}{id_rubrique}

...sommaire :
[(#REM) Inscription au site ]
#FORMULAIRE_INSCRIPTION
[(#REM) Menu de navigation mots-cles
<B_mots>...</B_mots>
[(#REM) Articles dans la meme rubriqu
...
[(#REM) Menu de navigation mots-cles
#MODELE{article_mots}

rubrique : -

article : -

plan :

[(#REM) Autres sites web ]
...
[(#REM) Menu de navigation mots-cles
...

forum : -

site : -

</div><!-- fin navigation -->
</div><!-- fin conteneur -->
[(#REM) Pied de page ]
<INCLURE{fond=inc-pied}{skel=#SQUELETTE}>
</div><!-- fin page -->
</body>
</html>
..sommaire :

rubrique :</BOUCLE_rubrique_principal>

article :</BOUCLE_article_principal>

plan :

forum :

site :</BOUCLE_site>

Communsommairerubriquearticleplanforumsite
#CACHE...#CACHE7200#CACHE7200#CACHE86400#CACHE7200#CACHE3600
#HTTP_HEADER"Cache-Control : max-age=3600, must-revalidate"
#CACHE7200
<BOUCLE_rubrique_principal(RUBRIQUES) {id_rubrique}><BOUCLE_article_principal(ARTICLES) {id_article}><BOUCLE_site(SITES){id_syndic}>
<!DOCTYPE...
<html dir="#LANG_DIR" lang="#LANG">
[(#REM) Les sites n'ont pas de "lang" a proprement parler
<BOUCLE_lang(RUBRIQUES){id_rubrique}><br><html dir="#LANG_DIR" ...
<head>
<title>...</title><title>[(#NOM_SITE_SPIP|textebrut)]</title>        <title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title><title>[(#TITRE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title><title><:plan_site:> - [(#NOM_SITE_SPIP|textebrut)]</title><title><:poster_message:> - [(#NOM_SITE_SPIP|textebrut)]</tit<title>[(#NOM_SITE|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]
[<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|cou[<meta name="description" content="(#INTRODUCTION|couper{150}[<meta name="description" content="(#INTRODUCTION|couper{150}[<meta name="description" content="(#DESCRIPTIF_SITE_SPIP|cou[<meta name="description" content="(#DESCRIPTIF|couper{150}|t
<INCLURE{fond=inc-head}>
<body class="..."><body class="page_sommaire"><body class="page_rubrique"><body class="page_article"><body class="page_plan"><body class="page_forum"><body class="page_site">
<div id="page">
[(#REM) Entete de la page + titre du site ]
<INCLURE{fond=inc-entete}>
[(#REM) Fil d'Ariane ]
<div id="hierarchie">...</div>
<div id="hierarchie"><:accueil_site:></div><div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accu<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accu<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accuvoire source<div id="hierarchie"><a href="#URL_SITE_SPIP/"><:accu
<div id="contenu">...</div>
[(#REM) Les deux derniers articles ]
...
[(#REM) Articles suivants ]
...<div class="contre-encart">         ....</div>...
<div class="encart">
[(#REM) Breves ]
... <div class="breves"> ...
[(#REM) Liens des forums ]
... <div class="forums"> ....
[(#REM) Sur le Web ]
... <div class="syndic"> ....
</div><!-- fin encart -->
<div class="cartouche">
...
<div class="#EDIT{texte} chapo">
...
<div class="contre-encart">
[(#REM) Articles de la rubriq
...
<div class="rubriques">
...
[(#REM) Documents joints a la
...
</div><!-- fin contre-encart -->
...
<div class="encart">
[(#REM) Breves du secteur ]
<div class="breves">
...
[(#REM) Sites de la rubrique
<div class="syndic">
...
[(#REM) Proposer un site ]
#FORMULAIRE_SITE
</div><!-- fin encart -->
<div class="cartouche">
...
<div class="#EDIT{chapo} chapo">
...
<div class="#EDIT{texte} texte">
...
[(#REM) Portfolio : album d'images ]
...
<BOUCLE_afficher_document(DOCUMENTS)
...
[(#REM) Autres documents joints...
...
[(#REM) Petition...
...
[(#REM) Forum de l'article ]
...
<div class="cartouche">
...
[(#REM) Articles et sous-rubriques
...
<div class="encart">
...
[(#REM) Breves ]
...
[(#REM) Sur le Web ]
...
</div><!-- fin encart -->
...
<div class="cartouche">
...
<BOUCLE_forum_parent
...
<BOUCLE_article
...
<BOUCLE_breve
...
<BOUCLE_rubrique
...
#FORMULAIRE_FORUM
...
<div class="cartouche">
...
[(#REM) Articles issus de la syndicat
...
</div><!-- fin contenu -->
[(#REM) Menu de navigation laterale ]
<div id="navigation">
[(#REM) Menu de navigation par rubriq
<INCLURE{fond=inc-rubriques}>...
<INCLURE{fond=inc-rubriques}{id_rubrique}<INCLURE{fond=inc-rubriques}{id_rubrique}<INCLURE{fond=inc-rubriques}{id_rubrique}
...
[(#REM) Inscription au site ]
#FORMULAIRE_INSCRIPTION
[(#REM) Menu de navigation mots-cles
<B_mots>...</B_mots>
[(#REM) Articles dans la meme rubriqu
...
[(#REM) Menu de navigation mots-cles
#MODELE{article_mots}
[(#REM) Autres sites web ]
...
[(#REM) Menu de navigation mots-cles
...
</div><!-- fin navigation -->
</div><!-- fin conteneur -->
[(#REM) Pied de page ]
<INCLURE{fond=inc-pied}{skel=#SQUELETTE}>
</div><!-- fin page -->
</body>
</html>
..</BOUCLE_rubrique_principal></BOUCLE_article_principal></BOUCLE_site>