PDA

Voir la version complète : Comment faire appel à une fonction dans un template ?


icecube3
11/04/2004, 11h55
Bonjour :025:

Je souhaiterais modifier le template "navbar" où on peut voir l'utilisateur sous lequel vous êtes connecté.



<!-- clubs gérés -->
<if condition="$irbmanageur['clubid']">

Vous gérez liens_lienversclub($irbmanageur['clubid']).<br />
Caisse : club_credits($irbmanageur['caisse']) Cr.

</if>
<!-- / clubs gérés -->


mais évidemment ça ne marche pas, on voit juste affiché le nom de la fonction appelée.
est-il possible que ces deux fonctions soient évaluées (en php) ?

Merci d'avance :026:

HiDeo
11/04/2004, 12h08
Il faut que tu definisse ces variables en php je ne vois pas le problèmes !

icecube3
11/04/2004, 13h11
La variable tableau $irbmanageur est bien définie, et les fonctions liens_lienversclub() et club_credits() aussi, le problème, c'est que vbulletin interprète ça comme un texte, pas comme une fonction php :confused:
On obtient : "Caisse : club_credits(1) Cr."

J'ai essayé les brackets { }, rien n'y fait !
On obtient : "Caisse : {club_credits(1)} Cr."

En regardant les templates originaux de vbulletin, j'ai remarqué ce code :
<phrase 1="..." 2="...">$vbphrase[...]</phrase>
mais je ne comprends pas comment ça marche :o

merci d'avance :p

Pitchoune
11/04/2004, 13h26
1=... correspond à {1} d'une autre vbphrase, pareil pour 2...

Exemple (template postbit) :

<phrase 1="$post[username]">$vbphrase[xs_avatar]</phrase>

xs_avatar => "Avatar de {1}"
$post[username] => valeur prise directement de showthread.php

Aussi, dans les pages PHP, tu peux faire un construct_phrase pour créer un ebsemble aussi :

construct_phrase($vbphrase[phrase_a_afficher], $valeur_1, $valeur_2);

Dans ce cas, phrase_a_afficher => "N'importe {1} texte avec {2} variables"

$valeur_1 et plus peuvent être une vbphrase ou une variable.

icecube3
11/04/2004, 14h34
Merci Pitchoune, donc apparemment on ne peut pas s'en servir pour appeler une fonction php dans un template :(

c'est donc impossible ?

Akex
11/04/2004, 19h34
Ben suffit de définir les variables dans le fichier php avant l'appel du template.

icecube3
11/04/2004, 20h36
Mais les variables sont bien définies, puisque :
club_credits($variable) devient club_credits(1)
donc la variable $variable est bien interprétée et elle est remplacée par sa valeur "1".

Le problème vient des fonctions : en effet vB n'interprète pas club_credits(1),
une fonction que j'ai définie et qui retourne une chaîne de caractères.

En gros, c'est comme si je voulais afficher la chaîne de caractère :
$chaine = "du texte avec une fonction() au mileu";
et au lieu d'interprèter fonction() comme une fonction et la remplacer par sa valeur de retour, vB l'affiche comme si c'était du texte.

Si on était dans un script php, on ferait :
$chaine = "du texte avec une " . fonction() . " au mileu";
mais dans un template ce n'est pas possible.

Vous voyez ce que je veux dire ? :crazy:

Akex
11/04/2004, 21h07
C'est pour ça qu'il faut définir une variable ($truc=club_credits($variable);) dans le fichier php avant l'appel du template et puis appeler ensuite cette variable dans le template ($truc).

icecube3
11/04/2004, 21h58
Désolé, j'avais pas compris :055: :o

Merci Akex :026: :026: