Вкратце: это будет работать так, как вы его намереваетесь.
Однако я хотел бы добавить несколько предложений:
strtotime()
возвращает целое число, и сравнить его со строкой. Это не обязательно приводит к проблемам в вашем случае использования, но должно быть улучшено в любом случае. Простое обновление, подобное этому, следующее:
$announcedate = strtotime('+6 day');
$now = strtotime('now');
Ваше решение работает для вашей конкретной задачи, но не является общими. Если вы хотите повторно использовать этот код для других целей (например, для других объявлений), вам, скорее всего, придется адаптировать логику. По этим причинам и сохранить столько логики вдали от вашего уровня отображения smarty, я бы проверял объявления только в моем php-коде.
Это будет выглядеть примерно так:
PHP (псевдокод, идея, функция myAnncouncements()
извлекает объявления, необходимые для определенного периода времени или что-то):
$smarty->assign('announcements', myAnncouncements());
шаблон Smarty:
{if isset($announcements)}
{foreach $announcements as $item}
// whatever is needed in here....
{/foreach}
{/if}
не работает должным образом. Я хочу закончить объявление, когда закончится 6-й день. Я думаю, что мой более высокий оператор if неверен – sammry
Если вы хотите указать конкретную дату окончания, просто замените свой '$ declate' на определенную дату (pe' $ declate = strtotime ('2013-11-30 12:00:00'), или что-то вроде этого). – Bjoern
Я пробовал это как $ declate = strtotime ('2013-10-30 12:00:00'); $ now = strtotime ('now'); $ smarty-> assign ('announceate', $ declate); $ smarty-> assign ('now', $ now); И в файле tpl {if $ now> $ declate} My Announcement {/ if} ....... все еще не работает так, как предполагалось. как только время закончится, оно покажет, а не через какое-то время, пожалуйста, помогите – sammry