- 04 septembre 2016
- Steeve
Les filtres de sortie permettent de faire deux choses bien distinctes, des filtres de condition de sorti et des modificateurs de sortie de chaine.
Filtre de condition de sortie.
Cela permet de vérifier une ou plusieurs valeurs et de renvoyer une chose si la ou les valeurs sont vrai, ou un autre chose si la valeur est fausse. Exemple en français :
Admettons que je veuille afficher l'ID (identifiant unique) de l'utilisateur qui a écrit ce post je vais écrire ce code : [[*publishedby]] ce qui devrait me renvoyer un numéro (normalement 1 car je suis le premier utilisateur du site).
Donc je pourrais tester avec un filtre de valeur si la valeur est de 1 alors j'écrit « oui c'est 1 », si par contre la valeur n'est pas de 1 je revoie « non c'est pas 1 ». Pour réaliser ceci il suffirait d'écrire comme ceci :
[[*publishedby:is=`1`:then=`oui c’est 1`:else=`non c’est pas 1`]]
Comme vous pouvez le voir, il est vraiment facile de tester la ou les valeurs de sortie d’une variable quelles qu’elles soient. Vous pouvez tester les variables d’une ressource telles que : pagetitle, longtitle, menutitle, publishedby, etc…
Et vous pouvez aussi tester les variables de modèle que vous aurez vous même créez.
Comme vous pouvez le voir, il est vraiment facile de tester la ou les valeurs de sortie d’une variable quelles qu’elles soient. Vous pouvez tester les variables d’une ressource telles que : pagetitle, longtitle, menutitle, publishedby, etc…
Et vous pouvez aussi tester les variables de modèle que vous aurez vous même créez.
Ou même des valeurs d’une ressource externe par exemple si vous faites appel a getResources ou Rowboat (extra de MODX).
Voici la liste des modificateurs de sortie conditionnels.
Modifier | Description | Exemple |
---|---|---|
if, input | ||
or | Peut être utilisé pour des modificateurs de sortie de chaîne avec une relation "OU" (or). | [[+numbooks:is=`5`:or:is=`6`:then=`There are 5 or 6 books!`:else=`Not sure how many books`]] |
and | Peut être utilisé pour des modificateurs de sortie de chaîne avec une relation "ET" (and). | |
isequalto, isequal, equalto, equals, is, eq | Compare à une valeur passée, et se déplace sur "faire" si elle est égale. Peut être utilisé avec "faire" (then) et "sinon" (else). | [[+numbooks:isequalto=`5`:then=`There are 5 books!`:else=`Not sure how many books`]] |
notequalto, notequals, isnt, isnot, neq, ne | Compare à une valeur passée, et se déplace sur "faire" si elle est pas égale. Peut être utilisé avec "faire" (then) et "sinon" (else). | [[+numbooks:notequalto=`5`:then=`Not sure how many books`:else=`There are 5 books!`]] |
greaterthanorequalto, equalorgreaterthen, ge, eg, isgte, gte | Compare à une valeur passée, et se déplace sur "faire" si elle plus grande ou est égale. Peut être utilisé avec "faire" (then) et "sinon" (else). | [[+numbooks:gte=`5`:then=`There are 5 books or more than 5 books`:else=`There are less than 5 books`]] |
isgreaterthan, greaterthan, isgt, gt | Compare à une valeur passée, et se déplace sur "faire" si elle est plus grande. Peut être utilisé avec "faire" (then) et "sinon" (else). | [[+numbooks:gt=`5`:then=`There are more than 5 books`:else=`There are less than 5 books`]] |
equaltoorlessthan, lessthanorequalto, el, le, islte, lte | Compare à une valeur passée, et se déplace sur "faire" si elle est inférieur ou égale. Peut être utilisé avec "faire" (then) et "sinon" (else). | [[+numbooks:lte=`5`:then=`There are 5 or less than 5 books`:else=`There are more than 5 books`]] |
islowerthan, islessthan, lowerthan, lessthan, islt, lt | Compare à une valeur passée, et se déplace sur "faire" si elle est inférieur. Peut être utilisé avec "faire" (then) et "sinon" (else). | [[+numbooks:lt=`5`:then=`There are less than 5 books`:else=`There are more than 5 books`]] |
contains | Vérifie si la chaine contient la valeur passé | [[+author:contains=`Samuel Clemens`:then=`Mark Twain`]] |
containsnot | Vérifie si la chaine ne contient pas la valeur passé | [[+author:containsnot=`Samuel Clemens`:then=`Somebody Else`]] |
hide | Va d'abord vérifier la condition, et cache l'élément si la condition est vrai | [[+numbooks:lt=`1`:hide]] |
show | Va d'abord vérifier la condition, et affiche l'élément si la condition est vrai | [[+numbooks:gt=`0`:show]] |
then | Utilisation conditionnelle. | [[+numbooks:gt=`0`:then=`Now available!`]] |
else | Utilisation conditionnelle, s'utilise avec la condition "faire" (then). | [[+numbooks:gt=`0`:then=`Now available!`:else=`Sorry, currently sold out.`]] |
select | ||
memberof, ismember, mo | Vérifie si l'utilisateur est membre d'un groupe spécifique. | [[+modx.user.id:memberof=`Administrator`]] |
Modificateur de sortie de chaîne.
Le modificateur n'est pas fait pour comparer la valeur de l'élément par rapport à un autre. Il est la comme son nom l'indique pour modifier la valeur elle même. L'exemple le plus simple c'est par exemple de mettre la chaine de caractères retourné en majuscule.
Un autre exemple serait de renvoyer le nombre de caractères que contient la chaine de caractères.
Ou encore de couper la chaine selon une certaine longueur de caractères.
Voici la liste des modificateurs de sortie de chaîne.
Modifier | Description | Exemple |
---|---|---|
cat | Ajoute la valeur de l'option (si non vide) à la valeur d'entrée | [[+numbooks:cat=` books`]] |
lcase, lowercase, strtolower | Transforme les chaînes en minuscules. Semblable en PHP a strtolower | [[+title:lcase]] |
ucase, uppercase, strtoupper | Transforme chaînes en majuscules. Semblable en PHP a strtoupper | [[+headline:ucase]] |
ucwords | Transforme la première lettre d'un mot en majuscule. Semblable en PHP a ucwords | [[+title:ucwords]] |
ucfirst | Transforme la première lettre de la chaîne en majuscules. Semblable en PHP a ucfirst | [[+name:ucfirst]] |
htmlent, htmlentities | Remplace tout caractère qui a une entité HTML avec cette entité. Semblable en PHP a htmlentities. Utilise la valeur actuelle du paramètre "modx_charset" du système avec ENT_QUOTES | [[+email:htmlent]] |
esc,escape | Échappe en toute sécurité les valeurs de caractères en utilisant une expression régulière et str_replace. Échappe aussi [, ] et ` | [[+email:escape]] |
strip | Remplace tous les retour à la ligne, les tabulations et les espaces multiples avec un seul espace | [[+textdocument:strip]] |
stripString | Supprime la valeur de la chaine de caractères. | [[+name:stripString=`Mr.`]] |
replace | Remplace une valeur par une autre | [[+pagetitle:replace=`Mr.==Mrs.`]] |
striptags, stripTags,notags,strip_tags | Supprime les balises HTML à partir de l'entrée. Accepte éventuellement une valeur pour indiquer les balises a accepter. Semblable en PHP a strip_tags | [[+code:strip_tags=`
`]] |
len,length, strlen | Calcule la longueur d'une chaîne. Semblable en PHP a strlen | [[+longstring:strlen]] |
reverse, strrev | Inverse la valeur de la chaine, caractère par caractère. Semblable en PHP a strrev | [[+mirrortext:reverse]] |
wordwrap | Insère un retour à la ligne selon la valeur rentré. Semblable en PHP a wordwrap. Prend une valeur facultative pour définir la position du wordwrap. | [[+bodytext:wordwrap=`80`]] |
wordwrapcut | Insère un retour à la ligne après la quantité d'ensemble de caractères, indépendamment des limites de mots. Semblable en PHP a wordwrap, avec le mot découpé activé. Prend une valeur facultative pour définir la position du wordwrap. | [[+bodytext:wordwrapcut=`80`]] |
limit | Limite d'une chaîne de caractères à un certain nombre de caractères. Par défaut, 100. | [[+description:limit=`50`]] |
ellipsis | Ajoute une ellipse à et tronque une chaîne de caractères si elle est plus d'un certain nombre de caractères. Utilise uniquement les espaces comme points d'arrêt. Par défaut, 100. | [[+description:ellipsis=`50`]] |
tag | Affiche l'élément brut sans tag. Utile pour la documentation. | [[+showThis:tag]] |
add,increment,incr | Renvoie la valeur incrémenté avec option possible (par défaut +1). | [[+downloads:incr]] [[+blackjack:add=`21`]] |
subtract,decrement,decr | Returns input decremented by option (default: -1) Renvoie la valeur décrémenté avec option possible (par défaut -1). | [[+countdown:decr]] [[+moneys:subtract=`100`]] |
multiply,mpy | Renvoie la valeur multiplié avec option possible (par défaut x2). | [[+trifecta:mpy=`3`] |
divide,div | Renvoie la valeur divisé avec option possible (par défaut /2). N'accepte pas le 0. | [[+rating:div=`4`]] |
modulus,mod | Renvoie le reste de la valeur (Modulo) avec option possible (par défaut %2, retourne 0 ou 1). | [[+number:mod]] or [[+number:mod=`3`]] |
ifempty,default,empty, isempty | Retourne la valeur par defaut si la valeur d'entrée est vide. | [[+name:default=`anonymous`]] |
notempty, !empty, ifnotempty, isnotempty | Retourne la valeur si la valeur d'entrée n'est pas vide. | [[+name:notempty=`Hello [[+name]]!`]] |
nl2br | Converti les retours à la ligne (\n) en élément html < br >. Semblable en PHP a nl2br. | [[+textfile:nl2br]] |
date | Formate un timestamp unix dans un format différent. Semblable en PHP a strftime. La valeur est le format. Voir Date Formats. | [[+birthyear:date=`%Y`]] |
strtotime | Converti un chaine de date en unix timestamp. Utile pour le combiner avec le filtre de sortie de la date. Semblable en PHP a strtotime. Prend une date. Voir Date Formats. | [[+thetime:strtotime]] |
fuzzydate | Renvoie une jolie date avec hier ou aujourd'hui filtré. Prend une date. | [[+createdon:fuzzydate]] |
ago | Retourne un joli format de date (il y a) en secondes, minutes, semaines or mois. Prend une date (strtotime). | [[+createdon:date=`%d-%m-%Y`:ago]] |
md5 | Crée un hachage MD5 de la chaîne d'entrée. Semblable en PHP a md5. | [[+password:md5]] |
cdata | Entoure le texte avec des balises CDATA. | [[+content:cdata]] |
userinfo | Retourne les informations demandé de l'utilisateur. L'élément doit être un ID utilisateur (modUser). La valeur est la valeur de la colonne de la base de données (username, fullname,...). Voir l'exemple ci-dessous. | [[+modx.user.id:userinfo=`username`]] |
isloggedin | Retourne vrai si l'utilisateur est connecté dans le contexte. Contexte du site (web), contexte du manager (mgr)... | [[+modx.user.id:isloggedin]] |
isnotloggedin | Retourne vrai si l'utilisateur n'est pas connecté dans le contexte. | [[+modx.user.id:isnotloggedin]] |
toPlaceholder | Mettre la variable dans un espace réservé. Ne pas empêcher la sortie de la valeur de la variable de modèle, il faut donc ajouter [[*someTV:toPlaceholder=`placeholder`:notempty=``]] si vous ne voulez pas à la sortie la valeur de la variable de modèle elle-même. | [[*someTV:toPlaceholder=`placeholder`]] |
cssToHead | Mettre un élément < link > dans le < head >, ou la valeur d'entrée est placé dans l'attribu href. Utilisez modX.regClientCSS. |
[[+cssTV:cssToHead]] |
htmlToHead | Insérer un bloc de code HTML dans le header (entête) de la page avant la fermeture du head < / head >. Utilisez modX.regClientStartupHTMLBlock |
[[+htmlTV:htmlToHead]] |
htmlToBottom | Insérer un bloc de code HTML à la fin de la page, avant la fermeture du body (corps) < / body >. Utilisez modX.regClientHTMLBlock. |
[[+htmlTV:htmlToBottom]] |
jsToHead | Insérer un code JS (JavaScript) ou un lien dans le header (entête) de la page, avant la fermeture du head < / head >. Utilisez modX.regClientStartupScript. |
[[+jsTV:jsToHead]] |
jsToBottom | Insérer un code JS (JavaScript) à la fin de la page, avant la fermeture du body (corps) < / body >. Utilisez modX.regClientScript. |
[[+jsTV:jsToBottom]] |
urlencode | Converti l'entrée en une chaine de caractère URL-friendly, similaire a ce qu'un formulaire pourrait faire. Semblable en PHP a urlencode | [[+mystring:urlencode]] |
urldecode | Convertit l'entrée à partir d'une chaine URL-friendly. Semblable en PHP a urldecode | [[+myparam:urldecode]] |
Pour aller plus loin vous pouvez créer votre propre filtre de sortie (output filter).
Exemple d'un filtre de sortie (output filter) personnalisé. Ce filtre permet juste de remplacer tous les espace les espaces dans ma variable, par un espace suivi d'une virgule. Exemple simple qui n'a pas trop d'intérêt mais qui vous permettra je l'espère de comprendre comment cela fonctionne.
// Ma variable recherche prend pour valeur un espace $recherche = ' '; // Ma variable remplace prend pour valeur un espace suivi d’une virgule $remplace = ' ,'; // On recherche un espace // et on remplace par un espace suivi d’une virgule // dans la valeur d’entrée (input) // dans la variable sortie $sortie = str_replace($recherche, $remplace, $input); // On renvoie la variable sortie return $sortie;
N’hésitez pas si vous avez des questions concernant ce tutoriel.
Si vous l'avez apprécié partagez le ;-)
Partagez cet article
A propos de l'auteur
Passionné d’informatique, de Design, de développement d'application et du Web en général (participation au start-up weekend, hackathon, dev Var, formation Google...), j’ai créé ce site afin de partager mes connaissances sur mon système de gestion de contenu préféré MODX. En espérant participer au développement de la communauté.