我正在为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>
我错过了什么吗?
答案 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_id
,code
(必须是您的模块名称),{{1} (即:'position
')和content_bottom
(通常> 90)。