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>
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.
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.
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}
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.
;-)
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.