2012-02-17 2 views
1

Si j'ai une variable SmartySmarty si déclaration avec date?

{$test.date_created} 

qui affiche une date dans un modèle Smarty, par exemple:

02/2/2012

Sur le site Smarty, il est dit que vous pouvez afficher la date du jour avec ce qui suit. Comment puis-je l'utiliser dans une instruction if pour afficher un message lorsqu'il a 3 jours ou plus à compter de la date d'aujourd'hui?

S'il a 3 jours ou plus, affiche «Ancien». Sinon, affichez "Nouveau".

Répondre

2

Vous pouvez utiliser strtotime() pour obtenir l'horodatage correspondant à il y a trois jours, puis le comparer à la date de votre message. Par exemple, en supposant $message est votre message enregistrement et $message['date'] est l'horodatage vous devez vérifier:

$isMessageOld = ($message['date'] <= strtotime('-3 days')); 
$smarty->assign('isMessageOld', $isMessageOld); 

Et puis, dans votre modèle:

{if $isMessageOld} ... {/if} 

Je ne suis pas sûr à 100%, mais vous On peut aussi le tester directement dans Smarty. En supposant que vous avez passé à $message Smarty:

{if $message.date <= strtotime('-3 days')} ... {/if} 
1

Vous pouvez facilement vérifier déjà passé ce jour dans Smarty en utilisant cette $ smarty.now

$smarty.now|date_format:"%Y%m%d" 

Voici un exemple de traverser l'ancienne (passé) Date

<{foreach from=$meetings item=m}> 
<{if $smarty.now|date_format:"%Y%m%d" <= $m.date|date_format:"%Y%m%d"}> 
    <tr> 
    <td><{counter}></td> 
    <td><{$m.title}> on </td> 
    <td><{$m.date}></td> 
    </tr> 
<{else}> 
    <tr> 
    <td><strike><{counter}></strike></td> 
     <td><strike><{$m.title}> on </strike></td> 
     <td><strike><{$m.date}></strike></td> 
    </tr> 
<{/if}> 
<{/foreach}> 

Nous devons créer rencontrer tableau de liste en php et l'affecter à Smarty

$meetings[0]['title'] = "Speech on Gandhi Janyanti"; 
$meetings[0]['date'] = "2-Oct-2011"; 
$meetings[1]['title'] = "Meet friend"; 
$meetings[1]['date'] = "10-Oct-2013"; 
$meetings[2]['title'] = "Goto USA"; 
$meetings[2]['date'] = "22-Oct-2013"; 
$meetings[3]['title'] = "Speech on Gandhi Janyanti"; 
$meetings[3]['date'] = "2-Oct-2014"; 
$meetings[4]['title'] = "Meeting with John"; 
$meetings[4]['date'] = "22-Oct-2014"; 
$meetings[5]['title'] = "Speech on Gandhi Janyanti"; 
$meetings[5]['date'] = "2-Oct-2015"; 
$meetings[6]['title'] = "Meeting with Uncle"; 
$meetings[6]['date'] = "22-Oct-2015"; 

$theme->assign("meetings",$meetings); 
echo $theme->fetch("index.tpl"); 
+0

Bien mais vous feriez mieux de faire: '{if $ smarty.now <= $m.date.value|@strtotime}' –