Prestashop 1.6 自定义模块:addJS/addCSS 无法正常工作
Prestashop 1.6 custom module : addJS/addCSS don't work properly
我创建了我的 prestashop 模块,带有一个挂钩来显示我的特定搜索表单。
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[=14= 之前]
请问如何让我的文件在合适的时间被调用?
您不得在 hookDisplayHeader()
之外使用 $this->context->controller->addCSS
和 addJS
。
构建页面的 header 时调用 hookDisplayHeader()
添加 headers 元素。完成此挂钩后,header 已构建且无法更改。
所以当钩子 hookDisplayTopColumn()
被调用时,header 已经构建。
要添加文件,您必须在模块中实现 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()
中删除这些行。
我创建了我的 prestashop 模块,带有一个挂钩来显示我的特定搜索表单。
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[=14= 之前]
请问如何让我的文件在合适的时间被调用?
您不得在 hookDisplayHeader()
之外使用 $this->context->controller->addCSS
和 addJS
。
构建页面的 header 时调用 hookDisplayHeader()
添加 headers 元素。完成此挂钩后,header 已构建且无法更改。
所以当钩子 hookDisplayTopColumn()
被调用时,header 已经构建。
要添加文件,您必须在模块中实现 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()
中删除这些行。