Guide et astuce Instructions conditionnelles - XenForo 2

Statut
La discussion n'est pas ouverte à d'autres réponses
Le système d'instructions conditionnelles de XenForo est un outil puissant pour personnaliser votre forum, voici ses principales utilisations.
(Les indications de condition peuvent être étendues en utilisant les opérateurs de condition AND et OR. Il est également possible d'utiliser la syntaxe XenForo tel que <xf:if>, <xf:else> et <xf:elseif>).

Source : Unmaintained - Conditional Statements for XenForo 2



-- CONTENU OBSOLÈTE SUPPRIMÉ --

Consultez le tutoriel pour en savoir plus sur les instructions conditionnelles
- https://xenforo.fr/tutoriels/conditions
 
Dernière modification par un modérateur:

Oliver

Membre 
Salut, <xf:elseif> permet de rajouter une condition précise contrairement à <xf:else>.

Ce code permet d'afficher du code si on se trouve sur la page d'accueil, forum_list, et sur aucune autre page.
HTML:
<xf:if is="$template == 'forum_list'">
    Contenu...
</xf:if>

Celui-ci par contre indique le contenu à afficher sur la page d'accueil et un autre contenu sur les pages qui ne sont pas la page d'accueil.
HTML:
<xf:if is="$template == 'forum_list'">
    Contenu A
<xf:else />
    Contenu B
</xf:if>

Et enfin celui-ci indique le contenu à afficher sur la page d'accueil et le contenu à afficher sur la page des forums.
HTML:
<xf:if is="$template == 'forum_list'">
    Contenu A
<xf:elseif is="$template =='forum_view'" />
    Contenu B
</xf:if>

Après tu peux faire beaucoup de combinaisons, entrelacées par exemple :
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>
 

Nicolas

Administrateur
Membre du Staff
Ne pas oublier d'échapper <xf:elseif /> s'il n'y a pas d'autres conditions qui suivent sinon il faut utiliser <xf:elseif>
 

Nicolas

Administrateur
Membre du Staff
Ouais j'ai un peu tout mélangé.
<xf:if is... ou <xf: elseif is... sont des balises auto-fermantes donc il faut systématiquement les échapper />
et
<xf:else> ne s'échappe pas.
 

Wu Tang

Membre 
Ce n'est pas des conditions dans ce cas mais des media queries et c'est dans le fichier extra.less pas directement dans les templates donc ça ne fonctionne pas exactement de la même façon. (dites moi si je me trompe...)
 

Maxime H

Membre 
Les instructions conditionnelles mériteraient un tutoriel bien à elles et mériteraient surtout une révision, celles-ci sont pleines d'erreurs, d'incohérences et manquent d'explications.

18. Comment cacher du contenu sur la page d'accueil uniquement ?
HTML:
<xf:if is="$template !== 'forum_list'">
Contenu...
</xf:if>
Cas d'école, pour moi ce code ne cache pas du contenu sur la page d'accueil. Littéralement cela dit :
  • SI le template N'EST PAS forum_list ALORS afficher le contenu.
Et puis ça à un sens si ce code est ajouté à PAGE_CONTAINER qui est le template commun à toutes les pages. Sur tout autre template il ne servirait à rien. Il y a d'autres exemples.

6. Comment afficher un contenu différent aux membres et aux invités ?
HTML:
<xf:if is="!$xf.visitor.user_id">
Contenu pour les membres...
<xf:else />
Contenu pour les invités...
</xf:if>
Erreur, ou bien le premier contenu est celui des invités et le second celui des membres ou alors ce n'est pas <xf:if is="!$xf.visitor.user_id"> mais <xf:if is="$xf.visitor.user_id">.
 

Oliver

Membre 
Cas d'école, pour moi ce code ne cache pas du contenu sur la page d'accueil. Littéralement cela dit :
  • SI le template N'EST PAS forum_list ALORS afficher le contenu.
On peut l'interpréter également SI le template EST forum_list ALORS NE PAS afficher le contenu
Donc cacher ce contenu sur la page d'acceuil, sous-entendu, effectivement, que ce code/contenu soit ajouté sur PAGE_CONTAINER.

Je suis d'accord pour le mettre à jour et le rendre plus explicite mais si cela passe en tutoriel je n'ai plus les droits.
Voir avec @Nicolas comment gérer ça.
 
On peut l'interpréter également
Oui l'interprétation c'est une chose mais le code à une seule lecture et en l'occurrence c'est SI ... N'EST PAS ... ALORS
À mon avis c'est important de bien saisir les conditions parce que quand on commence à les imbriquer si on fait de l'interprétation on peut vite s'emmêler les pinceaux.
 

Nicolas

Administrateur
Membre du Staff
TUTORIEL

DISCUSSION
 
Statut
La discussion n'est pas ouverte à d'autres réponses

Membres en ligne

Extras
Les tutoriels
en français
Collection de tutoriels exclusifs pour découvrir l'environnement XenForo.
Our translations
exclusives
French translation of official XenForo and XenAddons softwares.
The subscription
19.90 €
A premium account to access all our official resources.
Contribute to the development and sustainability of the forum with a donation to our PayPal account.
Haut