gpt4 book ai didi

php - Prestashop 1.6自定义模块: addJS/addCSS don't work properly

转载 作者:行者123 更新时间:2023-12-03 01:44:53 24 4
gpt4 key购买 nike

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

构建页面标题后,将调用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com