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 BA && B | ET | VRAIE si A et B sont vraies. |
A or BA || 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 >>