我创建了我的 prestashop 模块,带有一个钩子(Hook)来显示我的特定搜索表单。
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');
}
不包括 JS 和 CSS 文件。为了找出原因,我在classes/controller/FrontController.php中添加了一个解析行:
public function addMedia($media_uri, $css_media_type = null, $offset = null, $remove = false, $check_path = true)
{
echo 'addMedia '.$media_uri."<br/>\n";
结果是:所有 css/js 文件出现在页面开头之前(就在 <body>
之后),但我的文件出现在显示 form_model.tpl 之前
请问如何让我的文件在适当的时候被调用?
最佳答案
您不得在 hookDisplayHeader()
之外使用 $this->context->controller->addCSS
和 addJS
。
构建页面标题后,将调用 hookDisplayHeader()
来添加标题元素。一旦完成此 Hook , header 就会构建并且无法更改。
因此,当调用钩子(Hook) 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()
中删除这些行。
关于php - Prestashop 1.6自定义模块: addJS/addCSS don't work properly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36214672/