Prestashop 1.6自定义模块:addJS / addCSS无法正常工作

时间:2016-03-25 05:41:31

标签: php module hook prestashop-1.6

我创建了我的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之前

请问,如何让我的文件在适当的时候被调用?

1 个答案:

答案 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中删除这些行。