Utilisation du HTML Logic
IPB 2.0.x
IPB 2.0.x
Présentation
Qu'est-ce que le HTML Logic ?
Le HTML Logic est utilisé dans les skins pour afficher un resultat suivant des conditions.
Il permet d'inserer des structure de côntrole PHP comme if et else.
Comment utiliser l'HTML Logic ?
Exemple : Mettre le titre des sujets épinglés en rouge.
Pour cela aller dans AdminCP > Skins & Templates > Skin Manager > IPB Default Skin > Edit Root Skin Template HTML > Forum Index > render_forum_row
Remplacer {$data['title']} par
HTML
<if="data['pinned']">
<span style='color:red'>{$data['title']}</span>
</if>
<else>
{$data['title']}
</else>
Voila un exemple simple d'utilisation du HTML Logic.<span style='color:red'>{$data['title']}</span>
</if>
<else>
{$data['title']}
</else>
Comment l'HTML Logic est-il géré par IPB
Lors de l'enregistrement du template IPB vas convertir l'HTML Logic en php.
Gestion de variable :
Toute les variables : ipb.member, ipb.vars, ipb.skin, ipb.lang et ipb.input
vont être convertis en $ibforums->member, $ibforums->vars, $ibforums->skin, $ibforums->lang et $ibforums->input
Toutes les autres entrées rencontrées (par exemple : data['pinned']) vont être remplacées par $entré (ce qui donne : $data['pinned'])
d'ou un inconvénient on ne peut pas utiliser de fonctions dans les conditions. (voir la rubrique "Astuce" pour y remédier.)
Exemple de syntaxe
Structure de contrôle
Il exite deux structure possible.
if simple
HTML
<if="condition">
code HTML
</if>
si vous avez juste a afficher quelque chose quand la condition est vrai.code HTML
</if>
if...else
HTML
<if="condition">
code HTML si la condition est vrai
</if>
<else>
code HTML si la condition est fausse
</else>
Structure a utilisé si un affichage est nécéssaire que la condition soit vrai ou fausse.code HTML si la condition est vrai
</if>
<else>
code HTML si la condition est fausse
</else>
Syntaxe de la condition
Simple :
HTML
<if="data['pinned']">
La condition seras vrai si la variable $data['pinned'] est définie et différente de 0, FALSE ou NULLComparraison :
HTML
<if="data['pinned'] == 1">
Dans ce cas la condition est vrai si $data['pinned'] est egal a 1.Autre syntaxe de comparaison :
- x > y : vrai si x est strictement supérieur a y
- x < y : vrai si x est strictement inférieur a y
- x >= y : vrai si x est supérieur ou égal a y
- x <= y : vrai si x est inférieur ou égal a y
- x === y : vrai si x est egal a y est de même type (appartir de PHP4 seulement)
- x <> y ou x != y: vrai si x est différent de y
- cond1 or cond2 : vrai si cond1 ou cond2 est vrai
- cond1 and cond2 : vrai si cond1 et cond2 sont vrais
- ! cond1 : vrai si cond1 est faux
Quelque astuce qui permette de faire des choses impossible avec la syntaxe classique.
Utilisation de fonction
On a vu que lors de l'enregistrement du template, IPB ajoutait automatiquement $ devant les variables. Mais le problème c'est qu'il ne fait pas la différence entre les variables et les fonctions donc on ne peut pas utiliser de fonctions dans les conditions.
En fait il y a moyen de bluffer IPB, car il utilise, les opérateurs or et and, comme séparateur des différentes conditions contenuent dans le if="...". Donc l'astuce c'est d'utiliser d'autres opérateurs qu'IPB ne reconnait pas comme tels mais que PHP saura utiliser. Par exemple || à la place de or et && à la place de and
Si on écrit
HTML
<if="data[0] == 1 && data[1] == 1">
IPB vas tranformer ça en CODE
if( $data[0] == 1 && data[1] == 1)
Comme vous le remarquer il manque le $ devant data[1] c'est peut étre un bug mais il vas nous étre trés utile.Puisque comme ça on vas pouvoir utilisé une fonction par exemple avec
HTML
<if="ibforums && in_array($ibforums->member['g_id'], explode(',', '4,7')">.....</if>
$ibforums est une des classes principale du forum et elle est disponible dans tous les skins donc la condition $ibforums seras toujours vraie.Pour PHP le code ci-dessus seras donc equivalent a
CODE
if( in_array($ibforums->member['g_id'], explode(',', '4,7') )
Vous savez comment utiliser une fonction dans les condition du HTML Logic.
PS : Autre opérateur non pris en charge par IPB xor ou exclusif donc si vous souhaité l'utilisé il faut pensé a mettre le $ devant la deuxèime variable ou si c'est une variable du type ipb.qqc remplacer par $ibforums->qqc
Exemple :
HTML
<if="data[0] == 1 xor $ibforums->member['id'] != 1">...</if>
vrai si ($data[0] == 1 et $ibforums->member['id'] == 1) ou ($data[0] != 1 et $ibforums->member['id'] != 1).Il faut qu'une des deux condition soit vrai mais pas les deux.
Pour utiliser du code php plus poussé rendez ici.
