Smarty 是 PHP 的 PHP 模板引擎,它有助于将表示 (XHTML/CSS) 与 PrestaShop 的核心功能/控制器分离。
模板文件(通常在 PrestaShop 中具有 .tpl 扩展名)总是由 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 变量中,您可以通过两种方式使用“assign”函数:
$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'}.
'escape' 修饰符用于避免 XSS 安全问题。