无法通过$ this-> load->视图将JS添加到前面

时间:2017-11-22 08:16:14

标签: opencart opencart-module opencart-3

我正在为OpenCart 3.x开发一个模块,我试图通过$this->load->view()方法将一些JavaScript代码插入到网站的前端但是无法使其工作,因为JS代码没有出现在DOM。

以下是我的代码的摘录:

/catalog/controller/extension/module/mymodule.php

class ControllerExtensionModuleMyModule extends Controller {

    public function index() {

        $this->load->language('extension/module/mymodule');

        $this->load->model('checkout/order');
        $this->load->model('setting/setting');
        $this->load->model('design/layout');
        $this->load->model('catalog/category');
        $this->load->model('catalog/manufacturer');
        $this->load->model('catalog/product');
        $this->load->model('catalog/information');

        $data['js_output'] = "Some JS output"; 

        return $this->load->view('extension/module/mymodule', $data);
    }
}

目录/视图/主题/默认/模板/扩展/模块/ mymodule.twig

<script type="text/javascript">
console.log('This is working!");
</script>

我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

通过控制器添加外部javascript文件,如下所示:

$this->document->addScript('catalog/view/javascript/my-external-script.js');

但如果它是一段javascript代码,您不需要编辑控制器文件,只需将其添加到您的视图文件(twig或tpl):

<script type="text/javascript">
    console.log("This is working!");
</script>

最后你可能需要清除缓存(vqmod,ocmod,twig等......)。

修改

如果您想在控制器中准备javascript代码,请按以下步骤操作:

<强>控制器

$data['js_output'] = 
'<script type="text/javascript">
    console.log("This is working!");
</script>';

<强>枝条

{{ js_output }}

答案 1 :(得分:0)

我终于解决了这个问题。 install()方法无法正确插入和加载设计/布局($this->model_design_layout->getLayouts()),这是一个问题。

如果您的模块需要在layout_module表格中插入布局,请确保您拥有正确的layout_idcode(必须是您的模块名称),{{1} (即:'position')和content_bottom(通常> 90)。