Browse Source
A été testé *sommairement* avec SPIP 3 et FAQ 3.x et devrait fonctionner...svn/root/tags/v3.1.0

2 changed files with 81 additions and 0 deletions
@ -0,0 +1,80 @@
|
||||
[(#REM) |
||||
|
||||
Un modèle pour générer une FAQ ou un lexique |
||||
à partir d'un fichier CSV. |
||||
|
||||
Ce modèle necessite les itérateurs (en plugin pour SPIP 2, inclus dans SPIP 3) |
||||
|
||||
Le modèle s'utilise de la façon suivante: |
||||
|
||||
<faqcsvXX|url=YYY|lexique=ZZZ|niveau=42|ex=truc> |
||||
|
||||
où: |
||||
- "XX" est l'id de la FAQ |
||||
- "url" est l'URL du fichier CSV (TODO: permettre d'utiliser directement des id_document) |
||||
- "lexique" existe alors un sommaire de type A|B|E|X|Z est généré |
||||
et des titres sont placés entre les définitions à chaque |
||||
changement de lettre |
||||
- "niveau" si ce n'est pas spécifié les intertitres sont de niveau 3 |
||||
(comme ceux de SPIP), sinon, ils prennent la valeur niveau. |
||||
- "ex" désigne le nom de la colonne des exemples utilisés. si ex=truc |
||||
la colonne utilisée sera ex_truc |
||||
|
||||
|
||||
Le fichier CSV doit être construit de la manière suivante (ordre des colonnes indifférent): |
||||
|
||||
|{{ dt }}|{{ dd }}|{{ lettre }}|{{ ancre }}|{{ ex_* }}| |
||||
| un mot | une déf | U | | SPIP est un joli mot | |
||||
| autre mot | autre déf | A | ancre alternative | | |
||||
|
||||
|
||||
où: |
||||
- les colonnes dd et dt sont indispensables (si pas de dt: pas de définition du tout) |
||||
- lettre est facultatif, mais necessaire si on veut un sommaire |
||||
- ancre est facultatif, mais utile si on veut avoir des ancres bien précises |
||||
pour certains mots. Sinon les ancres sont générées automagiquement: |
||||
le dt est repris avec les espaces transformés en "_". |
||||
ex.: un Mot -> un_Mot |
||||
- ex_* est facultative. Il peut y en avir plusieurs ex_cas1, ex_cas2, etc. |
||||
Elle contient des exemples qui ne s'affichent que si le paramètre ex |
||||
est rempli par la valeur correspondante |
||||
|
||||
|
||||
Le plugin commence par une boucle étrange dont le seul but est de vérifier la présence |
||||
des itérateurs (cette astuce ne fonctione que s'il y a au moins un admin !) |
||||
|
||||
|
||||
]#SET{alea, #EVAL{rand()}} |
||||
#SET{test,truc} |
||||
[(#PLUGIN{Iterateurs}|oui) |
||||
[(#SET{test,0minirezo})] |
||||
]<BOUCLE_CONDITIONNELLE(AUTEURS){statut=#GET{test}}{0,1}> |
||||
<B_Colonnes_Lexique> |
||||
<BOUCLE_Lettres(DATA){source csv, #ENV**{url}}{cle>0}{si #ENV{lexique}|oui}>[ |
||||
<a href="[#[id_(#ENV{id})_](#VALEUR{lettre}|trim|utf_8_to_unicode)]" class="spip">(#VALEUR{lettre}|trim|unique{lettre_pagin_#GET{alea}}|utf_8_to_unicode)</a> | |
||||
]</BOUCLE_Lettres> |
||||
[(#ENV{lexique}|non) |
||||
<dl class="faq"> |
||||
] |
||||
<BOUCLE_Colonnes_Lexique(DATA){source csv, #ENV**{url}}{cle>0}> |
||||
[ |
||||
[(#ENV{lexique}|oui) |
||||
[[(#COMPTEUR_BOUCLE|>{1}|oui) |
||||
</dl>] |
||||
<h[(#ENV{niveau,3}) ]id="[[id_(#ENV{id})_](#VALEUR{lettre}|trim|utf_8_to_unicode)]" class="spip"> |
||||
(#VALEUR{lettre}|trim|unique{lettre_faq_#GET{alea}}|utf_8_to_unicode) |
||||
</h[(#ENV{niveau,3})]> |
||||
<dl class="faq">] |
||||
] |
||||
<dt id="[(#VALEUR{ancre}|trim|sinon{#VALEUR{dt}|trim|replace{" ","_"}}|utf_8_to_unicode)]"> |
||||
(#VALEUR{dt}|trim|utf_8_to_unicode) |
||||
</dt> |
||||
<dd> |
||||
[(#VALEUR{dd}|trim|utf_8_to_unicode|propre)] |
||||
[<div class="exemple_faq">(#VALEUR{[ex_(#ENV{ex})]}|trim|utf_8_to_unicode|propre)</div>] |
||||
</dd>] |
||||
</BOUCLE_Colonnes_Lexique> |
||||
</dl> |
||||
</B_Colonnes_Lexique> |
||||
</BOUCLE_CONDITIONNELLE> |
||||
#FILTRE{trim} |
Loading…
Reference in new issue