Output Filter MODX
Les filtres de sortie, condition et modification de sortie MODX
  • 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.

ModifierDescriptionExemple
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.

ModifierDescriptionExemple
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]]
math Retourne le résultat d'un calcul avancé (gourmand sur le processeur, n'est pas recommandé) Supprimé depuis Revolution 2.2.6.
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;

Source en Anglais

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

Steeve

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é.

Commentaires (0)





Tags autorisés : <b><i><br> Ajouter un nouveau commentaire :