有没有办法创建一个可以访问商店所有(前端)页面的 OpenCart 模块?我想要的是用户不必将此模块“绑定”到所有布局,以便它存在于所有页面中。基本上我想构建一个模块,将一些 js 代码注入应用程序的每个页面,并根据后端的一些 OpenCart 钩子在前端运行一些额外的 js 代码或在后端运行一些 api 请求。谢谢
1 回答
通过说您希望模块能够“访问”商店的所有(前端)页面,我不确定您正在寻找什么。模块必须放置在布局中,并且可以将布局分配给多个页面。
每个布局都可以包含专门分配给您可以指定(和自定义)的区域的元素。例如,您可能希望在公共标头中为您的模块创建一个特殊位置。您只需在自己指定的文件夹中创建控制器、语言和视图文件(在我的示例中,我将使用 common 文件夹),我们将这些文件称为“loadjs”。
common/header.php
在和.tpl
文件之后将这些图案化。只要确保更改控制器文件中的类和文件名以匹配即可。因此,您将loadjs.php
在包含ControllerCommonLoadjs
类的控制器文件夹的公共目录中创建一个文件、文件夹loadjs.php
中的language/(your language)/common
文件和loadjs.tpl
文件夹中的view/theme/(your theme name)/template/common
文件。
将 a 添加$data['loadjs'] = $this->load->controller('common/loadjs');
到您的controller/common/header.php
文件和文件<?php echo $loadjs; ?>
中view/theme/(your theme name)/template/common/header.tpl
。您现在可以创建您的模块。
但是,为了能够将其添加到您的布局中,您需要对一些管理文件进行一些更改。Add $_['text_loadjs'] = 'Loadjs';
到你的admin/language/(your language)/design/layout.php
文件和$data['text_loadjs'] = $this->language->get('text_loadjs');
你的admin/controller/design/layout.php
文件。
您还需要对文件进行更改admin/view/template/design/layout_form.tpl
。查找以下代码:
<option value="content_top" selected="selected"><?php echo $text_content_top; ?></option>
<?php } else { ?>
<option value="content_top"><?php echo $text_content_top; ?></option>
<?php } ?>
<?php if ($layout_module['position'] == 'content_bottom') { ?>
<option value="content_bottom" selected="selected"><?php echo $text_content_bottom; ?></option>
<?php } else { ?>
<option value="content_bottom"><?php echo $text_content_bottom; ?></option>
<?php } ?>
并在其下方添加以下代码:
<?php if ($layout_module['position'] == 'loadjs') { ?>
<option value="loadjs" selected="selected"><?php echo $text_loadjs; ?></option>
<?php } else { ?>
<option value="loadjs"><?php echo $text_loadjs; ?></option>
<?php } ?>
现在,登录到您的 OpenCart 仪表板并将您的模块添加到布局上的 loadjs 位置。那应该这样做。