0

在某个日期之前我有一个公告要发布,所以我创建了一个时间变量

$announcedate = strtotime('+6 day');
$now = "1382960040";
$smarty->assign('announcedate', $announcedate);
$smarty->assign('now', $now);

并包含在 tpl 文件中

{if $now > $announcedate}My Announcement{/if}

我想在使用它之前确定一下,并在第 6 天后特别结束公告。

这是正确的方法吗?还是有其他指导?

4

1 回答 1

1

简而言之:这将按您的意愿工作。

不过,我想补充几点建议:

strtotime()返回一个整数,然后将其与字符串进行比较。这不一定会导致您的用例出现问题,但无论如何都应该改进。像这样的简单更新会改变:

$announcedate = strtotime('+6 day');
$now = strtotime('now');

您的解决方案适用于您的特定任务,但不是很通用。如果您想将此代码重用于其他目的(例如其他公告),您很可能必须调整逻辑。出于这些原因,为了让尽可能多的逻辑远离你的显示层,我只会在我的 php 代码中检查公告。

这看起来像这样:

php(伪代码,想法是,函数myAnncouncements()检索特定时间范围内所需的公告或其他):

$smarty->assign('announcements', myAnncouncements());

聪明的模板:

{if isset($announcements)}
    {foreach $announcements as $item}
         // whatever is needed in here....
    {/foreach}
{/if}
于 2013-10-28T06:33:12.827 回答