Pages: 1
Bonjour à tous.
Dans la série "j'aime bien Smarty mais c'est Smarty qui ne m'aime pas", je suis en train de devenir chèvre ! Dans un fichier tpl, je cherche à afficher un bout de html en fonction de l'état d'une variable. Un peu dans ce style :
{if $mavariable == true} <mon code HTML> {else} < un autre code HTML> {/if}
$mavariable est initialisée à true ou false dans le fichier php qui appelle le tpl. Mais çà ne marche pas et je n'ai pas de messages d'erreur à me mettre sous la dent pour débugguer.
Quelqu'un aurait-il une idée ?
P.S : J'ai volontairement généralisé le code en exemple pour que l'astuce puisse servir à d'autres. Mais si nécessaire, je peux, bien entendu, produire ici le code original complet.
Hors ligne
J'ai eu le pb récemment avec akBookStyle.
Et je constate que nous n'avons utilisé aucun booléen.
class="{if empty($AK_NEXT)}hide {/if}...
{if !empty($thumbnails)}
{if $AK_THUMBNAILS_LOC == 'top' or $AK_THUMBNAILS_LOC == 'bottom'}
<table class="ak_display_horizontal">
{else}
<table class="ak_display">
{/if}
J'ai fait une recherche vite fait dans tout notre code et je n'ai pas trouvé de booléen.
;-)
Hors ligne
Eric a écrit:
Code:
{if $mavariable == true} <mon code HTML> {else} < un autre code HTML> {/if}
Néanmoins, j'essaierai
{if $mavariable === true}
ou
{if $mavariable}
Hors ligne
VDigital a écrit:
Néanmoins, j'essaierai
{if $mavariable === true}
ou
{if $mavariable}
Je confirme : dans un .tpl , j'ai le code suivant qui fonctionne :
{if !$ec_ap_ok}style = "display:none;"{/if}
Ca réagit comme prévu.
Hors ligne
Bon, ben çà ne fonctionne pas chez moi... Je dois faire quelque chose de travers. Voici le code du tpl en question :
<table class="table2" width="97%" summary=""> <thead> <tr class="throw"> <td> </td> <td>{'Username'|@translate}</td> <td>{'user_status'|@translate}</td> <td>{'Email address'|@translate}</td> <td>{'Groups'|@translate}</td> <td>{'Registration'|@translate}</td> </tr> </thead> {foreach from=$users item=user name=users_loop} <tr class="{if $smarty.foreach.users_loop.index is odd}row1{else}row2{/if}"> <td><input type="checkbox" name="selection[]" value="{$user.ID}" {$user.CHECKED} id="selection-{$user.ID}" /></td> <td><label for="selection-{$user.ID}">{$user.USERNAME}</label></td> <td>{$user.STATUS}</td> <td>{$user.EMAIL}</td> <td>{$user.GROUPS}</td> <td {if $expiration}style="color:red;text-align:center;"{else}style="color=green;text-align:center;"{/if}>{$user.REGISTRATION}</td> {foreach from=$user.plugin_columns item=data} <td>{$data}</td> {/foreach} </tr> {/foreach} </table>
Dans le fichier appelant le tpl, j'ai ajouté manuellement ma variable tel que
$expiration = true;
L'affichage de {$user.REGISTRATION} reste avec la couleur de texte appliquée par défaut pour le thème Goto même si je passe $expiration = false.
Je vais regarder comment ceci est utilisé dans akBookStyle.
Hors ligne
C'est bon, j'ai trouvé !
En fait, il faut tout simplement déclarer la nouvelle variable dans l'initialisation du template comme ceci :
$expiration = True; $template->append( 'users', array( 'ID' => $local_user['id'], 'CHECKED' => $checked, 'U_PROFILE' => $profile_url.$local_user['id'], 'U_PERM' => $perm_url.$local_user['id'], 'USERNAME' => $local_user['username'] .($local_user['id'] == $conf['guest_id'] ? '<BR />['.l10n('is_the_guest').']' : '') .($local_user['id'] == $conf['default_user_id'] ? '<BR />['.l10n('is_the_default').']' : ''), 'STATUS' => l10n('user_status_'. $local_user['status']).(($local_user['adviser'] == 'true') ? '<BR />['.l10n('adviser').']' : ''), 'EMAIL' => get_email_address_as_display_text($local_user['email']), 'GROUPS' => $groups_string, 'REGISTRATION' => $local_user['registration_date'], 'EXPIRATION' => $expiration, ) );
Puis d'y faire appel dans le tpl sur le même principe que les autres variables affichées (sauf que celle-ci, on ne l'affiche pas mais sert juste de condition) :
<table class="table2" width="97%" summary=""> <thead> <tr class="throw"> <td> </td> <td>{'Username'|@translate}</td> <td>{'user_status'|@translate}</td> <td>{'Email address'|@translate}</td> <td>{'Groups'|@translate}</td> <td>{'Registration'|@translate}</td> </tr> </thead> {foreach from=$users item=user name=users_loop} <tr class="{if $smarty.foreach.users_loop.index is odd}row1{else}row2{/if}"> <td><input type="checkbox" name="selection[]" value="{$user.ID}" {$user.CHECKED} id="selection-{$user.ID}" /></td> <td><label for="selection-{$user.ID}">{$user.USERNAME}</label></td> <td>{$user.STATUS}</td> <td>{$user.EMAIL}</td> <td>{$user.GROUPS}</td> <td {if $user.EXPIRATION == True}style="color:red;text-align:center;"{else}style="color:lime;text-align:center;"{/if}>{$user.REGISTRATION}</td> {foreach from=$user.plugin_columns item=data} <td>{$data}</td> {/foreach} </tr> {/foreach} </table>
Hors ligne
Pages: 1