PDA

Voir la version complète : Référence de Style vBulletin 3 - Conditions des templates


Pitchoune
11/07/2005, 20h01
Les conditions des templates est un outil puissant pour contrôler l'affichage XHTML des templates. Ceci vous permet de créer simplement des branches if/else dans vos templates, afin d'afficher différents contenus selon la condition spécifiée.

Par exemple, vous souhaitez afficher un message de bienvenue sur la page d'accueil de votre forum pour les utilisateurs enregistrés et les visiteurs. La façon de savoir si la personne qui visite votre forum est un visiteur ou non, ou une personne inscrite est de vérifier la valeur $bbuserinfo[userid]. Si la valeur retournée est 0, le visiteur est pas inscrit (ou non-connecté), sinon c'est un utilisateur enregistré.

Ceci est une simple condition pour montrer un message de bienvenue aux visiteurs uniquement.

<if condition="$bbuserinfo['userid'] == 0">
<p>Bienvenue sur le forum !<br />
Si ceci est votre première visite, nous serons ravi que vous restiez !</p>
</if>

L'exemple précédent utilise une simple condition « if ». Vous pouvez étendre ceci pour inclure une condition « else », qui sera vérifiée si la condition « if » n'est pas remplie.

Cette exemple étend la précédente condition pour voir un message différent pour les utilisateurs enregistrés contrairement aux visiteurs.

<if condition="$bbuserinfo['userid'] == 0">
<p>Bienvenue sur le forum !<br />
Si ceci est votre première visite, nous serons ravi que vous restiez !</p>
<else />
<p>Bon retour, $bbuserinfo[username].<br />
<a href="search.php?do=getnew">Cliquez ici pour voir les nouveaux messages.</a></p>
</if>

La syntaxe actuel des conditions des templates vBulletin est assez simple d'utilisation. Pour commencer une condition, vous devez simplement commencer une balise <if>. La balise <if> accepte uniquement un attribut, qui est la « condition ». La valeur de l'attribut de la condition contient une expression écrite en PHP. Après l'ouverture de la balise <if> vien le code HTML qui doit être exécuté si la condition est remplie. La condition se termine par la balise </if>.

Cependant, la meilleur façon d'illustrer ceci est de démontrer un simple exemple de code PHP intégré en tant que condition de template.

Laissez-nous supposer dans le but de cette exemple que nous voulons avoir l'équivalent du code suivant dans notre template :

if ($my_variable == 1)
{
echo "<p>Ma variable est égal à un.</p>";
}

Ceci peut être exprimée par une condition de template comme ceci :

<if condition="$my_variable == 1">
<p>Ma variable est égal à un.</p>
</if>

Si nous souhaitons étendre notre code PHP pour inclure une condition « else » comme suit...

if ($my_variable == 1)
{
echo "<p>Ma variable est égal à un.</p>";
}
else
{
echo "<p>Ma variable n'est pas égal à un.</p>";
}

... Alors notre condition de template doit être formulé ainsi :

<if condition="$my_variable == 1">
<p>Ma variable est égal à un.</p>
<else />
<p>Ma variable n'est pas égal à un.</p>
</if>

En outre, nous voulons étendre notre code PHP avec la condition « else if » :

if ($my_variable == 1)
{
echo "<p>Ma variable est égal à un.</p>";
}
else if ($my_variable == 2)
{
echo "<p>Ma variable est égal à deux.</p>";
}
else
{
echo "<p>Ma variable n'est pas égal à un ou à deux.</p>";
}

Les conditions de template vBulletin ne supporte pas nativement la condition « else if », mais vous pouvez facilement répliquer ceci en instaurant des conditions comme ceci :

<if condition="$my_variable == 1">
<p>Ma variable est égal à un.</p>
<else />
<if condition="$my_variable == 2">
<p>Ma variable est égal à deux.</p>
<else />
<p>Ma variable n'est pas égal à un ou à deux.</p>
</if>
</if>

Utilisation des fonctions PHP dans les conditions

Par mesure de sécurité, afin d'éviter à certains dommages sur votre base de données ou votre serveur, la plupart des fonctions PHP sont désactivées dans les conditions des templates.

Ceci, par exemple, est désactivé par le système de templates vBulletin, car il contient une fonction « interdite » : mysql_query.

<if condition="$my_variable == mysql_query('SELECT * FROM mytable')">
<!-- mauvais mauvais... -->
</if>


A l'heure où est écrit ce didacticiel, la liste des fonctions « sécurisées » est la suivante :

in_array
is_array
is_numeric
isset
empty
defined
array
can_moderate*
can_moderate_calendar*
exec_switch_bg*
is_browser*
is_member_of*
Note :

Les fonctions suivies par une * sont des fonctions crées par vBulletin lui-même.

Ceci est un exemple d'utilisation d'une fonction « sécurisée » utilisée dans une condition de template :

<if condition="isset($my_variable) AND is_browser('ie')">
<!-- $my_variable est définit et le navigateur est Internet Explorer -->
</if>