2013-10-28 5 views
0

Я имею сделать заявление до некоторого времени, поэтому я создал временную переменную, какSmarty Дата использовать на TPL файл

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

и включены в TPL файл, как

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

Я хочу прежде чем использовать это и завершите объявление специально после 6-го дня.

Это правильный способ? Или любое другое руководство?

ответ

1

Вкратце: это будет работать так, как вы его намереваетесь.

Однако я хотел бы добавить несколько предложений:

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} 
+0

не работает должным образом. Я хочу закончить объявление, когда закончится 6-й день. Я думаю, что мой более высокий оператор if неверен – sammry

+0

Если вы хотите указать конкретную дату окончания, просто замените свой '$ declate' на определенную дату (pe' $ declate = strtotime ('2013-11-30 12:00:00'), или что-то вроде этого). – Bjoern

+0

Я пробовал это как $ 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

Смежные вопросы