我正在prestshop开发一个模块。我有一个JS配置页面为我的模块。我使用displayBackOfficeHeader
钩子在标题中添加我的JS。但是在安装我的模块后,当我配置我的模块时,它会给我Jquery
问题,因为我的JS在顶部添加jquery.js
之前意味着
问题1)如何管理我的JS应该在Jquery.js
后添加标题?
Que 2)如果我们不能像Que 1一样管理,那么如何在页脚添加JS ?
在大多数情况下添加任何资产(JavaScript或CSS)到后台(管理页面)你应该使用钩子actionAdminControllerSetMedia()
。正确注册JavaScript文件的完整步骤如下:
步骤1。在模块上注册钩子install:
public function install()
{
if (!parent::install()) {
return false;
}
// After a module installation, register the hook
if (!$this->registerHook('actionAdminControllerSetMedia')) {
return false;
}
return true;
}
步骤2。然后,添加JavaScript资源:
public function hookActionAdminControllerSetMedia()
{
// Adds jQuery and some it's dependencies for PrestaShop
$this->context->controller->addJquery();
// Adds your's JavaScript from a module's directory
$this->context->controller->addJS($this->_path . 'views/js/example.js');
}
有不同的方式和几种方法可以用来在后台办公室(管理页面)注册资产(它们按照执行的顺序列出):
- 钩子
hookDisplayBackOfficeHeader()
- 控制器方法
AdminControllerCore::setMedia()
- 钩子
actionAdminControllerSetMedia()
- 一个模块的方法
Module::getContent()
- 钩子
hookDisplayBackOfficeFooter()
要添加内联代码,最好的方法是使用钩子hookDisplayBackOfficeFooter()
。例如:
public function hookDisplayBackOfficeFooter()
{
return '
<script type="text/javascript">
var EXAMPLE_VARIABLE = "Hello, Zapalm!";
</script>
';
}
还有一个例子,当你需要添加一个JavaScript资源,但在你的模块的AdminController的子类(PrestaShop 1.7):
public function setMedia($isNewTheme = false)
{
parent::setMedia($isNewTheme);
$this->addCSS(_MODULE_DIR_ . $this->module->name . '/views/css/example.css');
$this->addJS(_MODULE_DIR_ . $this->module->name . '/views/js/example.js');
}
对于PrestaShop 1.6和1.5,你也可以这样做,但是你需要从方法定义和父方法调用中删除$isNewTheme
参数。
引用:
PrestaShop 1.7.
如何在PrestaShop 1.7中添加外部资源到前台页面
关于使用哪些方法的说明:addJS或registerJavascript。
在BO中进入"Modules"> "Hook positions",可以对模块的加载进行排序。