Le système d'instructions conditionnelles de XenForo est un outil puissant pour personnaliser votre forum, voici ses principales utilisations.
Ces instructions de condition peuvent être étendues en utilisant les opérateurs suivant
AND
et
OR
...
La
syntaxe XenForo est utilisé pour l'écriture des instructions et permet l'imbrication de plusieurs conditions pour un même contenu :
HTML:
<xf:if> <xf:else /> </xf:if>
Important : quand la variable, par exemple,
$xf.visitor.is_admin
indique que l'utilisateur est un administrateur, la valeur
!$xf.visitor.is_admin
indique que l'utilisateur n'est pas un administrateur.
Le rajout du caractère
!
devant une variable inverse le sens de celle-ci
1. Afficher du contenu aux administrateurs : vous permet d'afficher des notes ou des outils réservés au staff administratif sur n'importe quelle page de votre forum.
Cacher un lien vers une page spécifique par exemple.
HTML:
<xf:if is="$xf.visitor.is_admin">
Ce contenu n'est visible que par les administrateurs
</xf:if>
2. Afficher du contenu aux modérateurs : même utilité ici, permet d'afficher du contenu exclusivement visible aux modérateurs et donc qui est caché à tout autre utilisateur, même un administrateur.
HTML:
<xf:if is="$xf.visitor.is_moderator">
Ce contenu n'est visible que par les modérateurs
</xf:if>
3. Afficher du contenu aux administrateurs OU aux modérateurs : ici on utilise l'opérateur OR
. Attention si on utilisait l'opérateur
AND
cela indiquerait que le contenu doit être visible par un utilisateur qui est administrateur ET modérateur en même temps.
HTML:
<xf:if is="$xf.visitor.is_admin OR $xf.visitor.is_moderator">
Ce contenu n'est visible que par les administrateurs OU les modérateurs
</xf:if>
4. Afficher du contenu aux membres enregistrés : régulièrement utilisé il permet en fait de cacher du contenu aux membres qui ne sont pas enregistrés,
appelés communément visiteurs ou invités. Le contenu est donc visible par les membres, les modérateurs et les administrateurs.
HTML:
<xf:if is="$xf.visitor.user_id">
Ce contenu n'est visible que par les membres enregistrés
</xf:if>
5. Afficher du contenu aux visiteurs/invités : utilisation du caractère d'inversion de variables !
qui permet donc cette fois-ci
d'afficher du contenu qui ne sera visible que par les visiteurs et donc invisible à tout autre utilisateur, modérateurs et administrateurs compris.
HTML:
<xf:if is="!$xf.visitor.user_id">
Ce contenu n'est visible que par les invités
</xf:if>
6. Afficher un contenu différent aux membres et aux visiteurs : l'utilisation de l'opérateur xf:else
permet d'afficher un contenu différent
selon si c'est un membre ou un invité qui parcourt la page, utile pour afficher de la publicité aux invités et un contenu informatif aux membres par exemple.
HTML:
<xf:if is="!$xf.visitor.user_id">
Ce contenu n'est visible que par les invités
<xf:else />
Ce contenu n'est visitble que par les membres
</xf:if>
6+. Afficher du contenu au créateur de la discussion : Permet d'afficher un contenu spécifique destiné au créateur de la discussion qui est parcourue.
Utile par exemple pour afficher des informations réservées aux créateurs de discussions : note du staff, statistiques, etc...
template utilisé :
thread_view
HTML:
<xf:if is="$xf.visitor.user_id == $thread.user_id">
Ce contenu n'est visible que par le créateur de la discussion parcourue
</xf:if>
7. Afficher du contenu aux membres bannis : en règle générale un membre banni n'a plus accès à aucun contenu sur votre forum, mais dans certains cas particuliers cette
condition peut être utile.
HTML:
<xf:if is="$user.is_banned">
Ce contenu n'est visible que par les membres bannis
</xf:if>
8. Afficher du contenu aux membres selon leur score de réaction : pourquoi ne pas afficher un contenu spécifique à vos membres les plus appréciés de votre forum ? Ou, en inversant le sens de la variable
avec l'opérateur !
leur masquer la publicité pour les récompenser par exemple.
Remplacez X par le nombre de likes ciblé.
HTML:
<xf:if is="$user.reaction_score > X">
Ce contenu n'est visible que par les membres dont
le SCORE DE REACTION est supérieur ou égal à X
</xf:if>
9. Afficher du contenu aux membres selon leur nombre de messages : une instruction conditionnelle pour afficher du contenu à vos membres les plus prolixes.
Ou masquez du contenu en inversant la variable avec l'opérateur !
.
Remplacez X par le nombre de messages ciblé.
HTML:
<xf:if is="$xf.visitor.message_count > X">
Ce contenu n'est visible que par les membres
dont le nombre de MESSAGES est supérieur ou égal à X
</xf:if>
10. Afficher du contenu aux membres selon leur nombre de points : les trophées obtenus au fur et à mesure de votre activité sur le forum vous permettent d'obtenir
un certain nombre de points, utilisez ce nombre pour afficher ou masquer - !
- du contenu spécifique à vos membres.
Remplacez X par le nombre de points ciblé.
HTML:
<xf:if is="$user.trophy_points > X">
Ce contenu n'est visible que par les membres
dont le nombre de POINTS est supérieur ou égal à X
</xf:if>
11. Afficher du contenu à un membre en particulier : avec utilisant l'identifiant d'un membre cette instruction conditionnele vous permet de n'afficher du contenu qu'à lui.
Remplacez X par l'identifiant du membre.
HTML:
<xf:if is="$xf.visitor.user_id == X">
Ce contenu n'est visible que par le membre X
</xf:if>
12. Afficher du contenu à plusieurs membres en particulier : avec utilisant les identifiants des membres cette instruction conditionnele vous permet de n'afficher du contenu qu'à des membres spécifiquement ciblés.
Remplacez X, Y et Z par les identifiants des membres.
HTML:
<xf:if is="in_array($xf.visitor.user_id, [X, Y, Z])">
Ce contenu n'est visible que par les membre X, Y et Z
</xf:if>
Comment récupérer l'identifiant d'un membre ?
Positionnez le pointeur de votre souris sur le nom d'utilisateur ou l'avatar du membre dont vous voulez connaitre l'identifiant (figure 1).
Dans le coin en bas à gauche de votre navigateur l'URL pointant vers son profil contient son identifiant (figure 2).
figure 1 : nom d'utilisateur (ou avatar)
figure 2 : URL du profil de l'utilisateur contenant l'identifiant
13. Afficher du contenu aux membres indésirables (système de découragement) : vous pourriez par exemple leur signifier pourquoi ils obtiennent aléatoirement des pages blanches ou bien pourquoi
le comportement du forum semble incohérent.
HTML:
<xf:if is="$xf.visitor.Option.is_discouraged">
Ce contenu n'est visible que par les membres découragés
</xf:if>
14. Afficher du contenu aux membres qui affichent un Gravatar : utile si vous souhaitez par exemple les encourager à téléverser leur propre avatar si vous
envisagez de supprimer la fonctionnalité Gravatar sur votre forum.
HTML:
<xf:if is="$xf.visitor.gravatar">
Ce contenu n'est visible que par les membres affichant un Gravatar
</xf:if>
15. Afficher du contenu aux membres qui n'ont pas validé leur adresse e-mail : peut être utilisé, en inversant la variable avec l'opérateur !
,
pour masquer du contenu aux membres qui n'ont pas encore validé leur adresse e-mail pour les encourager à le faire.
HTML:
<xf:if is="$xf.visitor.isAwaitingEmailConfirmation()">
Ce contenu n'est visible que par les membres
n'ayant pas encore validé leur adresse e-mail
</xf:if>
Diverses instructions conditionnelles
Afficher du contenu aux membres :
- 16. qui ont renseigné le champ de localisation
- 17. qui ont renseigné le champ de leur site Web
- 18. qui ont une signature
- 19. dont l'e-mail est apparu comme invalide
- 20. en attente de l'e-mail de confirmation après avoir modifié leur adresse e-mail
- 20+. qui utilisent la langue par défaut
- 20++. qui utilisent la langue définie
HTML:
<xf:if is="$xf.visitor.location">
Contenu visible par les membres qui ont renseigné leur localisation
</xf:if>
HTML:
<xf:if is="$xf.visitor.website">
Contenu visible par les membres qui ont renseigné leur site Web
</xf:if>
HTML:
<xf:if is="$xf.visitor.signature">
Contenu visible par les membres qui ont une signature
</xf:if>
HTML:
<xf:if is="$xf.visitor.user_state} == 'email_bounce'">
Contenu visible par les membres dont l'email est apparu comme invalide
</xf:if>
HTML:
<xf:if is="$xf.visitor.user_state} == 'email_confirm_edit'">
Ce contenu n'est visible que par les membres en attente
de l'e-mail de confirmation après avoir modifié leur adresse e-mail
</xf:if>
HTML:
<xf:if is="$xf.language.id">
Ce contenu n'est visible que par les membres
qui utilisent la langue par défaut du forum
</xf:if>
HTML:
<xf:if is="$xf.visitor.language_id == '1'">
Ce contenu n'est visible que par les membres
qui utilisent la langue dont l'identifiant est 1
</xf:if>
21. Afficher/masquer du contenu à un groupe d'utilisateur en particulier :
- Afficher : utile pour cibler un groupe d'utilisateur, par exemple celui de vos membres VIP, et leur afficher un contenu exclusif.
- Masquer : pour masquer par exemple un lien vers les abonnements VIP aux membres déjà abonnés.
Remplacez X par l'
identifiant du groupe d'utilisateurs ciblé.
HTML:
<xf:if is="$xf.visitor.isMemberOf(X)">
Ce contenu n'est visible que par les
membres du groupe d'utilisateurs X
</xf:if>
HTML:
<xf:if is="!$xf.visitor.isMemberOf(X)">
Ce contenu n'est visible que par les membres
n'appartenant PAS au groupe d'utilisateurs X
</xf:if>
22. Afficher/masquer du contenu à plusieurs groupes d'utilisateur :
- Afficher : utile pour cibler des groupe d'utilisateurs, par exemple les groupes qui ont soucrit un abonnement et leur afficher un contenu exclusif.
- Masquer : pour masquer par exemple un lien vers les abonnements aux membres déjà abonnés.
Remplacez X, Y et Z par les
identifiants des groupes d'utilisateurs ciblés.
HTML:
<xf:if is="$xf.visitor.isMemberOf([X, Y, Z])">
Ce contenu n'est visible que par les
membres des groupes d'utilisateurs X, Y ou Z
</xf:if>
HTML:
<xf:if is="!$xf.visitor.isMemberOf([X, Y, Z])">
Ce contenu n'est visible que par les membres
n'appartenant PAS au groupe d'utilisateurs X, Y ou Z
</xf:if>
Comment récupérer l'identifiant d'un groupe d'utilisateur ?
Dans votre ACP positionnez le pointeur de votre souris sur le lien du groupe d'utilisateur dont vous voulez connaitre l'identifiant (figure 1).
ACP Groupes et permissions Groupes d'utilisateurs
Dans le coin en bas à gauche de votre navigateur l'URL l'identifiant du groupe d'utilisateur (figure 2).
figure 1 : nom du groupe d'utilisateurs
figure 2 : URL du groupe d'utilisateurs contenant l'identifiant
23. Afficher du contenu aux membres du Staff : pratique pour une annonce globale à tous les membres du Staff, en général les administrateurs et modérateurs.
Note : n'importe quel utilisateur peut être affiché membre du Staff dans l'ACP sur la page du membre (figure 1), par exemple votre graphiste ou votre développeur.
HTML:
<xf:if is="$xf.visitor.is_staff">
Ce contenu n'est visible que par les membres du Staff
</xf:if>
figure 1 : afficher un utilisateur comme membre du Staff
La méthode la plus simple pour afficher du contenu sur une page en particulier c'est d'éditer son template. Par exemple si je veux afficher du contenu sur la page de la liste des forums il me suffit
d'éditer le template forum_list
et le tour est joué, c'est simple mais un peu limité...
Parce que peut-être voudriez-vous afficher un contenu commun sur plusieurs pages ou masquer un contenu, transversal à plusieurs pages, sur une page en particulier. C'est dans ces cas particuliers que les instructions conditionnelles
pour les templates deviennent intéressantes.
Pour afficher du contenu sur toutes les pages de votre forum c'est le template PAGE_CONTAINER
qui doit être utilisé. Il affiche sur chaque page du forum l'en-tête, le menu de navigation, le fil d'Ariane
haut et bas, les notes d'informations et le pied-de page. C'est tout l'intérêt de ce template cela évite de répéter le code du contenu sur plusieurs templates mais cela à un inconvénient majeur cela l'affiche sur 100% des pages et ce
n'était peut-être pas votre intention.
Les instructions conditionnelles pour les templates résoudent ce problème.
La syntaxe des instructions est commune pour tous les templates :
$template == 'nom_du_template'
pour indiquer sur quel template AFFICHER le contenu
$template != 'nom_du_template'
pour indiquer sur quel template NE PAS AFFICHER le contenu
24. Afficher du contenu sur la page de la liste des forums uniquement.
template utilisé :
PAGE_CONTAINER
HTML:
<xf:if is="$template == 'forum_list'">
Ce contenu est visible uniquement sur la page de la liste des forums
</xf:if>
24+. Afficher du contenu sur la page d'un forum spécifique : Vous pourriez par exemple afficher un bloc d'information particulier à la thématique du forum parcouru.
Des règles de bonne conduite à observer sur un forum consacré à la politique ou à la religion pourrait avoir leur utilité.
Remplacez X par l'identifiant du forum ciblé.
template utilisé :
forum_view
HTML:
<xf:if is="$forum.node_id == X">
Ce contenu est visible uniquement sur la page du forum X
</xf:if>
24++. Afficher du contenu sur les pages de plusieurs forums spécifiques : Même utilité que l'instruction conditionnelle précédente mais en ciblant plusieurs forums en même temps.
Remplacez X, Y et Z par les identifiants des forums ciblés.
template utilisé :
forum_view
HTML:
<xf:if is="in_array($forum.node_id, [X,Y,Z])">
Ce contenu est visible uniquement sur la page du forum X, Y et Z
</xf:if>
25. Afficher du contenu sur toutes les pages sauf sur la page de la liste des forums uniquement : peut être utilisé pour afficher le bouton Nouveaux messages
sur les pages de votre forum sauf sur la page de la liste des forums puisqu'il s'y trouve déjà.
template utilisé :
PAGE_CONTAINER
HTML:
<xf:if is="$template != 'forum_list'">
Ce contenu est visible uniquement sur toutes les
pages sauf sur la page de la liste des forums
</xf:if>
26. Afficher du contenu sur toutes les pages qui contiennent une barre latérale : vous trouverez sûrement (ou pas) une utilité à cette instruction
Nous ça ne nous a pas beaucoup inspiré...
template utilisé :
PAGE_CONTAINER
HTML:
<xf:if is="$sidebar">
Ce contenu est visible uniquement sur toutes les
pages qui contiennent une barre latérale...
</xf:if>
Le principe est le même pour toutes les pages et leurs templates associés, exemples de templates à utiliser dans les instructions conditionnelles :
whats_new
: la page Quoi de neuf
conversation_view
: la page d'une conversation
conversation_list
: la page de la liste des conversations
xfrm_overview
: la page d'accueil du Gestionnaire de Ressources
xfrm_resource_view
: la page d'une ressource
thread_view
: la page d'affichage des messages d'une discussions
forum_view
: la page d'affichage de la liste des discussions d'un forum
Mais les instructions conditionnelles peuvent aller plus loin et cibler plus précisément des emplacements dans les templates, en voici quelques exemples
que vous trouverez probablement utiles pour afficher du contenu spécifique sur les pages de votre forum.
27. Afficher du contenu après le premier message d'une discussion : utilisez la régie publicitaire XenForo pour placer du contenu publicitaire (par exemple) sous chaque
premier message des discussions.
Changez
0 dans
Code:
$post.position % $xf.options.messagesPerPage == 0
pour changer l'emplacement du contenu :
- 0 : affiche du contenu sous le premier message de la discussion
- 1 : affiche du contenu sous la première réponse de la discussion
- 2 : affiche du contenu sous le deuxième message de la discussion
- 3 : affiche du contenu sous le troisième message de la discussion
- etc...
Fonctionnalité utilisée : Régie publicitaire
Emplacement utilisé : Message : sous le conteneur des messages
HTML:
<xf:if is="$post.position == 0">
Voici un message publicitaire sous le premier message d'une discussion
</xf:if>
28. Afficher du contenu après le premier message d'une discussion seulement si il y un certain nombre de messages publié : on va encore plus loin dans la précision de l'emplacement du contenu. Cette instruction conditionnelle
permet d'afficher du contenu publicitaire (par exemple) uniquement si la discussion comporte au moins 4 réponses (par exemple), cela évite d'afficher une publicité dans une discussion avec peu ou pas de réponses.
Changez
4 dans
Code:
count($__globals.posts) > 4
pour changer le nombre de messages minimum dans la discussion.
Fonctionnalité utilisée : Régie publicitaire
Emplacement utilisé : Message : sous le conteneur des messages
HTML:
<xf:if is="$post.position == 0 AND count($__globals.posts) > 4">
Voici un message publicitaire sous le premier message d'une discussion
uniquement si la discussion comporte au moins 4 messages.
</xf:if>
Avec les opérateurs <xf:else>
et <xf:else if="...">
les instructions conditionnelles permettent de
d'aller plus loin dans l'affichage de données en les imbricants les unes dans les autres par exemple.
29. La plus simple des complications : On affiche un contenu A sur une page en particulier (la page de la liste des forums) et un contenu B sur toutes les autres.
template utilisé :
PAGE_CONTAINER
HTML:
<xf:if is="$template == 'forum_list'">
Contenu A sur la page de la liste des forums
<xf:else />
Contenu B sur toutes les autres pages
</xf:if>
30. On complique un peu les choses : On affiche un contenu A sur la page de la liste des forums et un contenu B sur une autre page en particulier (les pages de forum).
template utilisé :
PAGE_CONTAINER
HTML:
<xf:if is="$template == 'forum_list'">
Contenu A sur la page de la liste des forums
<xf:elseif is="$template =='forum_view'" />
Contenu B sur les pages de forums
</xf:if>
31. On complique encore un peu plus : On affiche un contenu A sur la page de la liste des forums sinon on affiche un contenu B si on est sur les pages de forum
ou un contenu C si on est sur les pages de discussion.
template utilisé :
PAGE_CONTAINER
HTML:
<xf:if is="$template == 'forum_list'">
contenu A
<xf:else />
<xf:if is="$template == 'forum_view'">
Contenu B
<xf:elseif is="$template == 'thread_view'" />
Contenu C
</xf:if>
</xf:if>