2012-02-17 102 views
1

如果我有一個智者變量Smarty if if date with date?

{$test.date_created} 

顯示在智者模板的日期,例如:

2012年2月2日

在Smarty的網站,它說,您可以使用以下顯示今天的日期。

{$smarty.now|date_format:'%m/%d/%Y'} 

如何在if語句中使用它,以便在從今天的日期起3天或更多時顯示消息?

如果其3天或更長時間顯示「舊」。如果不是,則顯示「新建」。

回答

2

您可以使用strtotime()獲取三天前對應的時間戳,然後將其與您的消息日期進行比較。例如,假設$message是你的消息記錄和$message['date']是你必須檢查時間戳:

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

,然後在你的模板:

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

我不是100%肯定,但你也可以在Smarty中直接進行測試。假設你有$message傳遞給Smarty:使用此$ smarty.now

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

這裏是穿越老(通過)最新的一個例子

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

可以輕鬆地檢查已經在智者通過日期

<{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}> 

我們需要建立在PHP會議列表陣列和智者爲它分配

$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

不錯,但你會做的更好:'{if $ smarty.now <= $ m.date.value|@strtotime}' – 2014-01-11 20:08:01