我创建了我的prestashop模块,带有一个钩子来显示我的特定搜索表单。
lambda
不包括JS和CSS文件。为了找到原因,我在 classes / controller / FrontController.php 中添加了一个解析行:
public function hookDisplayTopColumn($params)
{
$this->context->controller->addCSS($this->_path.'css/modelfilter.css', 'all');
$this->context->controller->addJS($this->_path.'js/modelfilter.js');
$marque = $this->getSubCategories($this->marquesCategory);
$this->context->smarty->assign(array(
'marques' => $marque,
));
return $this->display(__FILE__, 'form_model.tpl');
}
结果是:所有css / js文件出现在页面开头之前(就在public function addMedia($media_uri, $css_media_type = null, $offset = null, $remove = false, $check_path = true)
{
echo 'addMedia '.$media_uri."<br/>\n";
之后),但我的文件出现在显示form_model.tpl之前
请问,如何让我的文件在适当的时候被调用?
答案 0 :(得分:5)
您不得在addJS
之外使用hookDisplayHeader()
和hookDisplayHeader()
。
构建页面标题时,会调用hookDisplayTopColumn()
来添加标题元素。完成此挂钩后,标题就会生成,无法更改。
因此,当调用钩子hookDisplayHeader()
时,标头已经构建。
要添加文件,您必须在模块中实施public function hookDisplayHeader($params)
{
$this->context->controller->addCSS($this->_path.'css/modelfilter.css', 'all');
$this->context->controller->addJS($this->_path.'js/modelfilter.js');
}
:
hookDisplayTopColumn()
从pip
中删除这些行。