Browse Source

Compat. avec la version 2.x: ajout du modèle introduit avec @81303 qui permet de faire des FAQ à partir d'un fichier CSV (distant ou non). La doc du modèle est détaillée dans le fichier.

A été testé *sommairement* avec SPIP 3 et FAQ 3.x et devrait fonctionner...
svn/root/tags/v3.1.0
bmarne@gmail.com 8 years ago
parent
commit
8f44da45ca
  1. 1
      .gitattributes
  2. 80
      modeles/faqcsv.html

1
.gitattributes vendored

@ -10,4 +10,5 @@ icones_barre/faq_titre-16.png -text
/inc-rubrique-faq.html -text
inclure/rubrique-faq.html -text
js/faq.js -text
modeles/faqcsv.html -text
prive/themes/spip/images/faq-24.png -text

80
modeles/faqcsv.html

@ -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>&nbsp;|
]</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…
Cancel
Save