La directive (:if:)
permet à certaines portions de la page d'être incluses ou exclues du traitement.
La forme générique de la directive (:if:)
est
(:if cond param:) contenu (:ifend:)
(:if cond param:) contenu (:else:) contenu (:ifend:)
(:if cond param:) contenu (:elseif cond param:) contenu (:ifend:)
où "cond" est une condition à tester, et "param" est un paramètre ou autre argument du test.
La balise (:if:)
termine automatiquement la précédente, et on peut utiliser (:if:)
au lieu de (:ifend:)
:
(:if cond1:) cond1 est vraie (:if:)
(:if cond1:) cond1 est vraie (:if cond2:) cond2 est vraie (:if:)
Cette ligne ci-dessus est identique à :
(:if cond1:) cond1 est vraie (:ifend:)(:if cond2:) cond2 est vraie (:ifend:)
Les conditions prédéfinies par défaut dans PmWiki sont:
(:if name NOMDEPAGE:)
(:if group NOMDEGROUPE:)
(:if auth ACTION NomDePage:)
(:if authid:)
(:if true:)
(:if false:)
(:if attachments:)
(:if date DATE1..DATE2]:)
(:if date 2009-09-01:)
vraie si c'est le 1er septembre 2009(:if date 20090901..:)
vraie si c'est après le 1er septembre(:if date 20090901..20091231:)
vraie si c'est entre 01/09 et 31/12
(:if enabled VARIABLE:)
(:if equal "CHAÎNE1" "CHAÎNE2":)
(:if match REG_EXPRESSION:)
(:if exists NOMDEPAGE:)
(:if action ACTION:)
Les formes négatives de conditions fonctionnent également.
(:if !attachments:)
(:if ! name NOMDEPAGE:)
(:if name !NOMDEPAGE:)
(:if name -NOMDEPAGE:)
N'importe quel (:if:)
termine automatiquement le précédent, ainsi les balises peuvent être facilement empilées:
(:if auth read:)* Vous pouvez lire (:if auth edit:)* Vous pouvez éditer (:if auth upload:)* Vous pouvez télécharger (:ifend:)
Les conditions peuvent être imbriquées (depuis version 2.2.beta 66).
Les balises (:if:)
imbriquées fonctionnent comme les blocs (:div:)
imbriqués. Il est nécessaire d'ajouter un nombre aux if-else-endif correspondants :
(:if cond1:) cond1 est vraie (:if2 cond2:) cond1 et cond2 sont vraies (:else2:) cond1 est vraie, cond2 ne l'est pas (:if2end:) (:else:) cond1 n'est pas vraie, cond2 est sans importance (:ifend:)
Note: des espaces ont été ajoutés pour une meilleure lisibilité.
Le métacaractère *
représente n'importe quel caractère, zéro, un ou plusieurs fois.
Le métacaractère ?
représente n'importe quel caractère, exactement une fois.
Ces deux "jokers" peuvent être utilisés avec les conditions name
et group
dans les balises conditionnelles. Ainsi,
(:if name Blog.2009* :)
(:if group PmWiki* :)
(:if name Profils.*,-Profils.Profils :)
Les conditions décrites dans cette page peuvent être combinées en expressions plus complexes avec les formes suivantes:
(:if expr EXPRESSION :) (:if [ EXPRESSION ] :) (:if ( EXPRESSION ) :)
Les conditions sont combinées par des opérateurs booléens et des crochets. Dans le tableau suivant, A et B sont soit des conditions.
Expression | Operateur | Resultat |
---|---|---|
A and B A && B | ET | VRAIE si A et B sont vraies. |
A or B A || B | OU | VRAIE si A ou B est vraie. |
A xor B | OU exclusif | VRAIE si soit A, soit B est vraie, mais pas les deux. |
! A | Négation | VRAIE si A n'est pas vraie. |
Exemple
(:if [ name UnePage and group UnGroupe ]:)
(:if name UnGroupe.UnePage:)
Notes :
L'expression suivante affichera le contenu seulement si l'utilisateur est administrateur, ou s'il est authentifié et la date est après le 2009-06-01 :
(:if [ auth admin || ( authid && date 2009-06-01.. ) ] :)
Voir Cookbook:ConditionalMarkupSamples (en anglais).
<< Liens InterMap | Index de la documentation | Variables de page >>