在Prestashop 1.7.1.1中使用addJS时未添加JS

时间:2018-08-19 00:30:28

标签: prestashop prestashop-1.7

我正在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?我还能做进一步调试吗?

2 个答案:

答案 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。