在预览版的页脚显示我的模块JS


Show my module JS at footer in prestashop

我正在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');
}

有不同的方式和几种方法可以用来在后台办公室(管理页面)注册资产(它们按照执行的顺序列出):

  1. 钩子hookDisplayBackOfficeHeader()
  2. 控制器方法AdminControllerCore::setMedia()
  3. 钩子actionAdminControllerSetMedia()
  4. 一个模块的方法Module::getContent()
  5. 钩子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参数。

引用:

  1. PrestaShop 1.7.

  2. 如何在PrestaShop 1.7中添加外部资源到前台页面

  3. 关于使用哪些方法的说明:addJS或registerJavascript。

在BO中进入"Modules"> "Hook positions",可以对模块的加载进行排序。