Игнорировать извлечение Smarty Templates () для одной страницы - PullRequest
0 голосов
/ 15 февраля 2011

Мне только что передали приложение для работы, написанное в шаблонах smarty, поэтому я не знаю, как все это работает.

Так что моя проблема в том, что smarty выбирает шаблон из файла на уровне приложения, чтобы он влиял на каждую страницу сайта. Мне нужен способ сказать один шаблон, чтобы игнорировать выборку уровня приложения.

Так что на уровне приложения это echo $ smarty-> fetch ('layout / main.html.tpl'); Я просто хочу игнорировать это на одном шаблоне. Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 15 февраля 2011

Вы бы вызвали $ smarty-> fetch () из скрипта, а не из шаблона. Вы можете использовать логику, чтобы выбрать другое имя шаблона и выбрать любой подходящий шаблон, поэтому один скрипт может легко вызвать любой из ваших шаблонов.

Например ...

$template = 'error.tpl';
if($conditions =='right')
{
    $template = 'normal.tpl';
}

echo $smarty->fetch("layout/$template");

Также обратите внимание, что вы можете использовать метод display () вместо echo с fetch ():

$smarty->display("layout/$template");

Таким образом, вы не сохраняете шаблон в переменной, которую вы просто собираетесь вывести.

Если это простой случай, когда один скрипт вызывает шаблон "A", а другой вызывает шаблон "B" ...

//call in template A
$smarty->display("layout/templateA.tpl");

//call in template B
$smarty->display("layout/templateB.tpl");

В этом случае нет необходимости в дополнительной логике.

0 голосов
/ 15 февраля 2011

Вы хотели бы добавить некоторую логику в любую точку приложения, загружающую этот шаблон.Проблема не умная, это приложение.Шаблон smarty не может вмешиваться в php, который его отображает, и не может вводить логику в скрипт php.

...