2012-04-03 5 views
0

Angenommen, es ist eine Vorlage:Kann ich das Smarty-Plugin zur Anzeige der Methode ausführen?

<html> 
    <head> 
    <title>{$title}</title> 
    </head> 
    <body> 
    {mod name='block' } 
    </body> 
</html> 

Es ist ein Plugin:

function smarty_function_mod($params, &$smarty) { 
$core->smarty->assign('title', 'New title'); 
} 

Im Hauptcode:

$smarty->assign('title', 'Заголовок'); 
$smarty->display('template.tpl'); 

So ist die Frage - wie soll ich einen neuen Wert zuweisen Für den Var-Titel aus dem Plugin wird es in der Anzeige-Methode durchgeführt? Wenn ich zuerst die Methode holen, und dann die Anzeige-Methode - alles ist in Ordnung, aber das Plugin wird zweimal ausgeführt. Gibt es eine Möglichkeit, das Plugin zu machen?

Antwort

-1

Smarty Vorlage это php скрипт. Fetch и Anzeige просто его выполняют, только fetch возвращает результат, выводит. Так что если выполнить holen, а потом Anzeige, то скрипт выполниться дважды - fetch вернет результат с title = 'Заголовок' и вызовет функцию плагина, которая изменит значение переменной (но заголовок в этот момент будет уже обработан). Потом Anzeige выведет уже измененный заголовок и опять вызовет функцию плагина.

Sie können die Anzahl der Bilder, die Sie abrufen möchten, auf dem Bildschirm anzeigen. Можно например поместить ее в начало шаблона, тогда эффектот изменения title будет сразу.

+0

Да это я все понимаю. Собственно и вопрос, можно ли по другому это сделать? Если поместить в начало шаблона то и код вернется в начало шаблона. Предположим я вывожу новость, соответственно заголовок страницы должен измениться на заголовок новости. p.s. спалился со словом "Заголовок"))) – SirGrey

+0

нет, так сделать нельзя - открой скомпилированный сморти шаблон и все поймешь. Переменная конкатенируется в строку в том месте, где она стоит в шаблоне. То есть это все равно что $ result = " $ titel"; $ result. = pluginFunction(); - на ticket уже никак не повлиять - он в этот момент уже является просто часть строки результата. То есть тут надо воздействовать на резутат, ане на тайтл. – user1303559

+0

Понятно, спасибо за ответ. Пначит пресстраивать всю архитектуру подключения модулей ( – SirGrey