Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /home/lmc77/sites/up310/plugins/content/up/upAction.php on line 2093

Deprecated: locale_accept_from_http(): Passing null to parameter #1 ($header) of type string is deprecated in /home/lmc77/sites/up310/plugins/content/up/upAction.php on line 2093

Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /home/lmc77/sites/up310/plugins/content/up/upAction.php on line 2093

Deprecated: locale_accept_from_http(): Passing null to parameter #1 ($header) of type string is deprecated in /home/lmc77/sites/up310/plugins/content/up/upAction.php on line 2093

Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /home/lmc77/sites/up310/plugins/content/up/upAction.php on line 2093

Deprecated: locale_accept_from_http(): Passing null to parameter #1 ($header) of type string is deprecated in /home/lmc77/sites/up310/plugins/content/up/upAction.php on line 2093

Afficher selon certaines conditions : date, utilisateur, langage, mobile ...

🆙 filter : affiche du contenu si toutes les conditions sont remplies

Cliquer pour lire la documentation

Reprise du plugin LM-Filter de Lomart
SYNTAXE 1 (condition comme option):
{up filter | datemax=20171225} contenu si vrai {====} contenu si faux {/up filter}
Le contenu si faux est optionnel. Il doit être après le contenu si vrai et séparé par {===} (au minima 3 signes égal)
SYNTAXE 2 (condition comme argument principal):
{up filter=datemax:20171225} contenu si vrai {====} contenu si faux {/up filter}
SYNTAXE 3 (mono-shortcode):
{up filter | guest=0 | return-true=REGISTER | return-false=GUEST}
--> guest=0 est vrai si un utilisateur est connecté
--> la valeur retournée est saisie comme option
SYNTAXE 4 (multi-conditions et négation):
{up filter=!day:1,7 ; hperiod:0900-1200,1500-1900 | return-true=OUVERT | return-false=FERME}
--> vrai si pas lundi ou dimanche et entre 9-12h ou 15-19h
@author: Lomart @version: UP-1.0 @license: GNU/GPL @tags: editor
  • filter: condition sous la forme cond1:val1,val2 ; cond2:val1,val2

Les conditions

  • datemax: vrai jusqu'à cette date AAAAMMJJHHMM
  • datemin: vrai à partir de cette date AAAAMMJJHHMM
  • period: vrai entre ces dates AAAAMMJJHHMM-AAAAMMJJHHMM
  • day: liste des jours autorisés. 1=lundi, 7=dimanche
  • month: liste des mois autorisés. 1=janvier, ...
  • hmax: vrai jusqu'à cette heure HHMM
  • hmin: vrai à partir de cette heure HHMM
  • hperiod: vrai entre ces heures HHMM-HHMM
  • guest: vrai si utilisateur invité
  • admin: vrai si admin connecté
  • user: liste des userid autorisé. ex: 700,790
  • username: liste des username autorisé. ex: admin,lomart
  • group: liste des usergroup autorisé. ex: 8,12
  • lang: liste des langues autorisées. ex: fr,ca
  • mobile: vrai si affiché sur un mobile
  • homepage: vrai si affiché sur la page d'accueil
  • server-host: vrai si le domaine du serveur contient un des termes de la liste
  • server-ip: vrai si l'adresse IP du serveur des dans la liste
  • artid: vrai si l'ID de l'article courant est dans la liste
  • catid: vrai si l'ID de la catégorie de l'article courant est dans la liste
  • menuid: vrai si l'ID du menu actif est dans la liste

retour pour version mono-shortcode

  • return-true = 1: valeur retournée si vrai et pas de contenu
  • return-false: valeur retournée si faux et pas de contenu

Divers

  • info: affiche les valeurs actuelles des arguments pour les conditions
  • id: identifiant
Version 1.6
utilisation de de la méthode interne : filter_ok
Version 1.7
l'argument principal est géré comme l'option filter d'une action
Version 2.6
ajout des options return-true et return-false pour utiliser un simple shortcode

Affichage sous conditions

Cette action est une reprise "simplifié" de mon plugin LM-Filter

Il permet d'afficher du contenu en fonction de conditions. Un petit exemple pour comprendre le principe

{up filter | day=2,3,4,5,6 | hperiod=0900-1200,1500-1900 } 
  Le magasin est ouvert 
{====}
  Le magasin est fermé
{/up filter}

La première condition day vérifie que le jour (1:lundi à 7:dimanche) et la seconde hperiod les plages horaires autorisées.

Le contenu entre les shortcodes est le texte à afficher. En option, il peut être séparé en 2 blocs par le shortcode {===}. Le nombre de signe égal doit être de 3 au minimum. La première partie est le texte pour des conditions remplies et la seconde das le cas inverse.

Résultat du test ci-dessus :


Le magasin est fermé

Exemples de shortcode

datemax : {up filter | datemax=20170910 } avant le 2017091000 {====} après le 201709102359{/up filter}

datemin : {up filter | datemin=201709101453 } avant le 201709101453 {====} après le 201709101453{/up filter}

period : {up filter | period=20170714,20170815 } tous les ans entre le 14 juillet et le 15 août 2017 {====} c'est pas les vacances 2017{/up filter}
        {up filter | period=0714,081510 } entre le 14 juillet et le 15 août 10h {====} c'est pas les vacances{/up filter}

day : {up filter | day=6,7 } Vive le weekend {====}c'est la semaine{/up filter}

month : {up filter | month=7,8 }vacances {====} fini les vacances{/up filter}

Heure

hmax : {up filter | hmax=1530 } avant 15h30 {====} après 15h30 {/up filter}

hmin : {up filter | hmin=1530 } après 15h30 {====} avant 15h30 {/up filter}

hperiod : {up filter | hperiod=0900-1200,1500-1700 } C'est ouvert {====} C'est fermé {/up filter}

Combiné : {up filter | hperiod=0900-1200,1700-2200 | day=2,3,4,5,6 } C'est ouvert {====} C'est fermé {/up filter}

Utilisateur

guest : {up filter | guest } je suis invité {====} je ne suis pas invité {/up filter}

admin : {up filter | admin } je suis admin {======} je ne suis pas admin {/up filter}

user : {up filter | user=700 } je suis le user 700 {/up filter}

username : {up filter | username=lomart } je suis lomart {/up filter}

group : {up filter | group=8,9 } je suis du groupe 8 ou 9 {======} je suis ni du groupe 8, ni du 9 {/up filter}

Langue

lang : {up filter | lang=fr } je parle français {====} je ne parle pas français {/up filter}

Divers

mobile : {up filter | mobile } vu sur mobile {====} vu sur ordi {/up filter}

homepage : {up filter | homepage } affiché en page d'accueil {====} ailleurs {/up filter}

combiné : {up filter | homepage | mobile=0 } homepage sur ordi {===} une de ces 2 conditions n'est pas correcte{/up filter}

Serveur

server-host : {up filter | server-host=.lomart.fr } site en production {====} site de test {/up filter}

Actuellement, vous regardez le site en production , dont l'URL est up.lomart.fr}

server-host : {up filter | server-ip=::1,localhost }locale{====}publique{/up filter}

Actuellement, vous regardez la version publique du site, dont l'adresse IP est 109.234.162.147}

Joomla

artid : L'ID de l'article est {up filter | artid=12}12{====}autre que 12{/up filter}

L'ID de l'article est autre que 12

catid : L'article est dans {up filter | catid=8}la catégorie actions{====}un autre catégorie{/up filter}

L'article est dans la catégorie actions

menuid : L'article est affiché par {up filter | menuid=119}le menu d'ID 119{====}un autre menu que le 119{/up filter}

L'article est affiché par le menu d'ID 119

Les conditions

motclé description type valeur
datemax vrai jusqu'à cette date AAAAMMJJHHMM
datemin vrai à partir de cette date AAAAMMJJHHMM
period vrai entre ces dates. Si l'année est omise, le test est fait pour l'année en cours. Exemple: 1224,01021000 = du 24 décembre minuit au 2 janvier de l'année suivante à 10h AAAAMMJJHHMM, AAAAMMJJHHMM
day liste des jours autorisés. 1,7 -> lundi ou dimanche
month liste des mois autorisés 1,2 -> janvier ou février
hmax vrai jusqu'à cette heure HHMM
hmin vrai à partir de cette heure HHMM
hperiod vrai entre ces plages horaires (liste possible) HHMM-HHMM
guest vrai si l'internaute n'est pas identifié (invité) 1|0
admin vrai si un admin est connecté 1|0
user liste des userid autorisés 8,12
username liste des username autorisés ex: admin,lomart
group liste des usergroup autorisés 8,12
lang liste des langages autorisés. Seule une partie du code est nécessaire ex: fr,ca
mobile vrai si le site est affiché sur un mobile 1|0
homepage vrai si le shortcode est affiché sur la page d'accueil 1|0
server-host vrai si l'argument figure dans le nom du serveur hôte.
exemple: server-host:.lomart.fr (un sous-domaine de lomart.fr)
tout ou partie du nom
server-ip vrai si l'IP correspond à une de la liste. localhost, ::1, 192.168.0.1 pour des serveurs locaux adresse IP
  • Une condition, comme argument d'une option filter 1, s'exprime en indiquant le type de condition (mot-clé), suivi du signe 2 points et de la valeur. filter=datemax:20191225
  • Plusieurs conditions sont possibles en les séparant par des points-virgules. filter=!day:6,7;hperiod:9-12
  • >Pour inverser le sens de la condition, il suffit d'ajouter un point d'exclamation devant le type de condition. filter=!admin ou filter=!group:8
  • Un mot-clé sans valeur est équivalent à filter=mot-clé:1 (ou vrai). Une condition fausse s'exprime par filter=mot-clé:0 ou filter=!mot-clé.
  • Pour les dates, la partie heure (HHMM) est optionnelle.

1 L'action filter permet également d'utiliser une autre forme. Voir filter ~ afficher sous conditions

Nouveauté version 1.7

Il est possible de saisir les conditions comme argument de l'option filter. La syntaxe est identique à celle des options filter des autres actions.

{up filter=day:2,3,4,5,6 ; hperiod:0900-1200,1500-1900 } 
  Le magasin est ouvert
{====}
  Le magasin est fermé 
{/up filter}

Cette forme permet de saisir une condition inverse. Exemple: filter=!admin signifie si pas administrateur.

Nouveauté version 2.6

1 /  Possibilité de saisir les valeurs retour comme option du shortcode.

Vous regardez cette page sur un {up filter=mobile | return-true=MOBILE | return-false=ORDINATEUR}

Vous regardez cette page sur un ORDINATEUR

2 / ajout des filtres : artid (id de l'article courant), catid (id de la catégorie de l'article courant) et menuid (id du menu en cours)

Restriction d'utilisation

ATTENTION   l'action filter filtre UNIQUEMENT le contenu renvoyé par une autre action.
Aucune possibilité d'intercepter des ajouts de CSS dans le head ou le lancement de javascript.

Un exemple pour être plus clair :

{up filter | period=1220-1226}
{up snowfall=images/noel }
{up filter}
🞮

L'utilisation imbriquée des shortcodes ci-dessous devraient afficher des images évoquant Noël entre les 20 et 26 décembre. Cela ne peux pas fonctionner UP évalue les actions enfants en premier. L'action snowfall met en place un javascript et ne renvoit aucun contenu. Donc lors de l'évaluation de l'action filter, snowfall est déjà actif

Il faut donc utiliser les options de filtrage proposées par les actions ayant ce genre de fonctionnement.

{up snowfall=images/noel | filter=period:1220-1226}