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 に答える