我正在Prestashop 1.7.1.1中开发自定义模块
该模块包含特定的CSS和JS。
我正在尝试通过以下方式添加它:
<?php
class mymodule_searchbar extends Module
{
public function __construct()
{
$this->name = 'mymodule_searchbar';
$this->displayName = 'Mymodule Search Bar';
$this->tab = 'front_office_features';
$this->version = '1.0';
$this->author = 'Mymodule';
$this->bootstrap = true;
parent::__construct();
}
public function hookDisplayHome()
{
$this->context->controller->addCSS(($this->_path).'views/css/bootstrap-select.css', 'all');
$this->context->controller->addJS(($this>_path).'views/js/bootstrap-select.js');
return $this->display(__FILE__, 'displayHome.tpl');
}
public function install() {
parent::install();
!$this->registerHook('displayHome');
return true;
}
}
我可以通过firefox调试看到bootstrap-select.css
正在加载,而bootstrap-select.js
未加载。我对名称,路径和文件权限进行了三重检查。
为什么不添加JS?我还能做进一步调试吗?
答案 0 :(得分:1)
您应该在标头中添加CSS和JS文件,还应该在视图中添加tpl文件,尝试使用以下代码,并在displayHome.tpl
不在指定路径的情况下重新定位。
<?php
class mymodule_searchbar extends Module
{
public function __construct()
{
$this->name = 'mymodule_searchbar';
$this->displayName = 'Mymodule Search Bar';
$this->tab = 'front_office_features';
$this->version = '1.0';
$this->author = 'Mymodule';
$this->bootstrap = true;
parent::__construct();
}
public function install()
{
return parent::install() &&
$this->registerHook('displayHeader') &&
$this->registerHook('displayHome');
}
public function uninstall()
{
return parent::uninstall();
}
public function hookDisplayHeader()
{
$this->context->controller->addCSS($this->_path.'views/css/bootstrap-select.css');
$this->context->controller->addJS($this->_path.'views/js/bootstrap-select.js');
}
public function hookDisplayHome()
{
return $this->display(__FILE__, 'views/templates/hook/displayHome.tpl');
}
}
PD。卸载当前模块,然后再次安装此模块以添加displayHeader
的钩子,并按照惯例,清除缓存。
答案 1 :(得分:1)
这是一个错字($this>_path)
,而不是($this->_path)
。
我还根据建议将CSS和JS移至DisplayHeader。