Smarty шаблон движок PHP для PHP, который облегчает разделение представления (XHTML/CSS) из PrestaShop в основных функциях/контроллеров.
Файл шаблона (обычно с расширением .tpl в PrestaShop) всегда вызывается файлом контроллера PHP (он может быть главным контроллером ядра или контроллером модуля).
Пример: /prestashop/controllers/front/ContactController.php
$this->context->smarty->assign(array(
'contacts' => Contact::getContacts($this->context->language->id),
'message' => html_entity_decode(Tools::getValue('message'))
));
$this->setTemplate(_PS_THEME_DIR_.'contact-form.tpl');
Мы можем видеть, что этот файл извлечения информации из базы данных и присвоения его Smarty.
После этого шаблон 'contact-form.tpl' отобразит его посетителям.
Синтаксис очень похож на модули, пример: /prestashop/modules/blocklink/blocklink.php
public function hookLeftColumn($params)
{
$this->smarty->assign('blocklink_links', $this->getLinks());
return $this->display(__FILE__, 'blocklink.tpl');
}
Кроме того, для хранения значений в переменных Smarty, вы можете использовать «присвойте» функции двумя способами:
$this->context->smarty->assign('my_smarty_variable_name', $my_value);
или если у вас есть несколько переменных:
$this->context->smarty->assign(array('my_smarty_variable_name1' => $my_value1), ('my_smarty_variable_name2' => $my_value2));
А потом в шаблоне Smarty:
The value of my variable is {$my_smarty_variable_name|escape:'htmlall':'UTF-8'}.
'побег' модификатор используется, чтобы избежать проблем безопасности XSS.
Я пытаюсь сделать то же самое, переопределив orderreturncontrollercore, присутствующий в контроллерах администратора, но нет никаких переменных smarty в файле form.tpl, можете ли вы сказать мне, почему? –
Можете ли вы создать отдельный вопрос и опубликовать свой код (как PHP, так и Smarty) для просмотра? –