要するに、これは意図したとおりに機能します。
ただし、いくつかの提案を追加したいと思います。
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}