Smarty は、PrestaShop のコア機能/コントローラーからのプレゼンテーション (XHTML/CSS) の分離を容易にする、PHP 用の PHP テンプレート エンジンです。
テンプレート ファイル (通常、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 変数に格納するには、「割り当て」機能を 2 つの方法で使用できます。
$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 セキュリティの問題を回避するために使用されます。