Plugin Compatible Joomla 3.x Français Anglais

Description

LM-Filter - contenu sous conditions

J'ai écrit ce plugin pour pouvoir retirer automatiquement le bandeau "Prochainement" d'une exposition passée. Et quitte à écrire un plugin, autant faire quelque chose qui soit le plus universel possible.

Ce plugin permet de tester des dates, des heures, des utilisateurs et des contextes Joomla.

Un exemple simple qui affiche : Vous visiter le site à partir d'un ordinateur.

<p>Vous visiter le site à partir d'un {lmf mobile} mobile {else} ordinateur {/lmf}.</p>

{lmf mobile} est la balise avec sa condition, suivi du code à afficher si la condition est remplie. {else} est une option qui permet d'indiquer le texte pour une condition non remplie. {/lmf} termine la séquence.

Un autre usage est de cacher une partie d'article en cours d'écriture ou de relecture.

{lmf admin} partie de l'article masquée lors relecture {/lmf}

Pour vous faire découvrir ses possibilités, je vais faire un module affichant les horaires d'un magasin avec une information pour indiquer s'il est actuellement OUVERT ou FERME. Même si ce n'est pas l'usage premier de ce plugin, il permet de mettre en œuvre la plupart des principes de base.

<div style="text-align:center">
<p>Le magasin est ouvert
<br>du mardi au vendredi de
<br>de 9h à 12h30 et de 15h à 19h
<br>et le samedi de 9h à 19h</p>
<p>Actuellement, nous sommes :
{lmf (!day=1,6,7 && hperiod=0900-1230,1500-1900) || (day=6 && hperiod=0900-1900) } 
OUVERT 
{else} 
<span style="color:red">FERME</span> 
{/lmf}
</p>
</div>

le résultat :

Le magasin est ouvert
du mardi au vendredi de
de 9h à 12h30 et de 15h à 19h
et le samedi de 9h à 19h

Actuellement, nous sommes : OUVERT

Nous utilisons des parenthèses pour traiter les 2 cas : jours de la semaine et samedi.

!day=1,6,7 signifie tous les jours de la semaine sauf le lundi (1), samedi (6) et dimanche (7). day est le type de test, le point d'exclamation est la négation bien connue en PHP.

&& est l'opérateur logique ET avec la condition suivante. Cet exemple ne comporte que 2 conditions, mais il n'y a pas de limite théorique.

hperiod=0900-1230,1500-1900 retourne vrai si l'heure actuelle est dans les plages indiquées. le nombre de plages n'est pas limité.

Voilà traité le cas des jours de la semaine.

l'opérateur || (OU) teste le cas du samedi.

day 6 && hperiod 0900-1900 vous l'avez compris vérifie que l'on soit un samedi entre 9 et 19h.

Si c'est le cas, OUVERT sera inséré et dans le cas contraire, ce sera le mot FERME en rouge.

Configuration

Une fois téléchargé et installé comme tous les plugins, il faut le publier. Vous pouvez aussi personnaliser son utilisation à l'aide des paramétres de configuration.

  • Nombre de jours pour NEW : vous pouvez définir le nombre de jours pendant lesquels un article est considéré comme nouveau pour la condition NEW.
  • Affichage DEBUG pour : permet de spécifier les personnes pour qui l'aide sera visible.
  • DEBUG dans quel cas : en complément du paramètre précédent, il est possible d'indiquer dans quel situation les infos seront visibles.
  • Balise(s) utilisée(s) : Par défaut, LM-Filter utilise la balise lmf pour encadrer les instructions de filtrage. Vous pouvez changer son nom par convenance personnelle ou à cause d'un conflit avec un autre plugin.
    Vous pouvez aussi ajouter des balises alternatives en les séparant par des pipes (altGr+6). Exemple: lmf|filtre|filter|DansLeCasOu
  • Balise ELSE : Par défaut, LM-Filter utilise le mot else pour séparer les codes à insérer selon que la condition soit vraie ou fausse.
    Vous pouvez ajouter d'autres mots en les séparant par des pipes (altGr+6). Exemple: else|sinon|DansLeCasOuCestPasVrai
  • Alias Mots-clés : Vous pouvez indiquer des alternatives pour les mots-clés des conditions. Il suffit d'écrire, sur une nouvelle ligne, le mot-clé d'origine puis le mot alternatif en les séparant par le signe égal.
    Exemple:
    hperiode=horaire
    new=nouveau
    new=NEU
LM-Custom : Module

Utilisation

Pour se servir du plugin dans un article ou un module custom, il suffit de taper une phrase comme celle-ci

{lmf homepage && datemax=20160815}VRAI{else}FAUX{/lmf}

Les opérateurs de base

Mot-clé Description
{lmf … } balise ouvrante avec ses paramètres. *
Le mot clé peut être modifié dans les paramètres du plugin.
{else} balise pour séparer les contenus à insérer selon que la condition soit vraie ou fausse *
! placé devant l'opérateur de condition, il inverse le sens du test
exemple: admin et !admin, l'utilisateur est-il superadmin ou non ?
= affectation argument. exemple: datemax=20160625.
L'argument ne doit être composé que de chiffres, de lettres non accentuées et des signes -,.
&& ET logique entre 2 conditions
|| OU logique entre 2 conditions
virgule séparateur de liste. exemple: id1, id2, idN. Important: un argument optionnel est indiqué entre crochet. Exemple: user1[,user2,...]

* il est possible d'indiquer des alternatives aux noms des balises et des mots-clés pour les conditions.

Conditions sur date

Mot-clé Paramétre(s) Description
datemax AAAAMMJJHHMM date et heure à partir de laquelle le contenu ne sera plus inséré.
Si l'heure n'est pas indiquéé, on considère la fin de journée soit 2400
datemin AAAAMMJJHHMM date et heure à partir de laquelle le contenu sera inséré
Si l'heure n'est pas indiquéé, on considère le début de journée soit 0000
day numéro(s) des jours les jours séparés par des virgules du lundi (1) à dimanche (7).
exemple pour le week-end: day=6,7
new [nombre de jours] Cet opérateur ne fonctionne que pour les articles
Nombre de jours après la date de publication d'un article. (à la minute près)
Par défaut, nombre de jours indiqué dans les paramètres du plugin.
Exemple d'utilisation avec valeur par défaut = 10:
{lmf new=2}c'est tout récent{/lmf}
{lmf !new=2 && new}entre 3 et 10 jours, ce n'est pas si vieux{/lmf}
{lmf !new}plus de 10 jours, c'est déjà ancien{/lmf}

Conditions sur heure

Mot-clé Paramétre(s) Description
hmax HHMM heure jusqu'à laquelle le contenu sera inséré.
Exemple pour le matin avant midi: hmax=1200
hmin HHMM heure à partir de laquelle le contenu sera inséré
Exemple pour l'après-midi après 14h: hmin=1400
hperiod HHMM-HHMM[,...] plage(s) horaire(s) séparée(s) par des virgules pour lesquelles le contenu est inséré
exemple: hperiod=0900-1200,1400-1900

Le paramètre est complété par des zéros, donc 09-121 sera compris comme 0900-1210

Conditions sur utilisateur

Mot-clé Paramétre(s) Description
guest - vrai si l'utilisateur n'est pas connecté
!guest permet de savoir si l'utilisateur est connecté
admin - vrai si un superadmin est connecté
user userid[,userid2,...] vrai si un des utilisateurs dont l'ID est indiquée est connecté.
exemple: user=80,105
username username[,username2,...] vrai si un des utilisateurs dont le username est indiqué est connecté.
exemple: username=toto,titi
group groupid[,groupid2,...] vrai si l'utilisateur connecté fait partie d'un des groupes indiqués.
exemple: groupid=10,11,12

Conditions sur contexte Joomla

Mot-clé Paramétre(s) Description
homepage - vrai si la page en cours est la page d'accueil du site.
Dans le cas d'un blog, toutes les pages en vue blog sont considérées comme page d'accueil, mais pas les vues "article" affichées par "lire la suite"
view viewtype[,viewtype2,...] vrai si le type de la page affichée est l'un des types indiqués.
Exemple pour uniquement en vue blog et article: view=article,blog
note: pensez à utiliser DEBUG pour connaître le type de vue d'une page
mobile - vrai si le site est vu à partir d'un mobile

Opérateurs divers

Mot-clé Paramétre(s) Description
debug - Affiche des informations de suivi sur le site si le paramètre plugin est "sur demande". Il suffit que le mot debug soit présent parmi les conditions.
Exemple {lmf debug hmax=1200}

Debug

LM-Filer DEBUG

La fonction debug sert à la fois pour connaitre la cause d'un échec mais aussi pour connaître la valeur courante des conditions.

L'image ci-contre montre les infos debug pour l'exemple au début de cet article sur les heures d'ouverture d'un magasin.

La 2ème ligne est un rappel de l'article concerné avec au-dessous votre condition telle qu'elle a été comprise par le plugin.

La dernière partie évalue chaque condition séparemment avec la valeur actuelle entre crochets et en gras.

Enfin, la toute dernère ligne, affiche l'équation booléenne correspondant à votre demande.

Pour simplifier l'évaluation et l'écriture, les comparaisons sont réalisées par deux dans l'ordre d'apparition.
Un seul niveau de parenthèse est possible.

Cela veut dire que faux || vrai && vrai est différent de vrai && faux || vrai.
Dans le premier cas, faux || vrai donne vrai qui est comparé à && vrai, donc le résultat est vrai.
Alors que dans le second cas, vrai && faux donne faux qui comparé à || faux donne faux.

Téléchargement

Exemple d'utilisation

L'exemple ci-dessous permet d'ajouter un badge "Nouveau" et de colorer le fond des nouveaux articles, uniquement en mode blog des articles en vedette.

Si la partie ajout d'un badge est classique, la coloration du fond fait appel à une petite fonction JQuery pour cibler la balise parent du contenu. On englobe l'article dans une DIV dont l'ID est utilisée comme sélecteur pour le JQuery.

<div id="art68">
{lmf new && view=featured}  
<script>
   jQuery(function($) {
     $('#art68').parent().css('background-color','rgba(255,250,205,0.4)');
   });
</script>
{/lmf}
<p>
{lmf new} 
  <span class="badge badge-important">Nouveau</span> 
{/lmf} 
 Voici un nouvel article </p> 
</div>

Support

Vous pouvez utiliser le forum ou le formulaire de contact

Print Friendly and PDF