0

有没有办法创建一个可以访问商店所有(前端)页面的 OpenCart 模块?我想要的是用户不必将此模块“绑定”到所有布局,以便它存在于所有页面中。基本上我想构建一个模块,将一些 js 代码注入应用程序的每个页面,并根据后端的一些 OpenCart 钩子在前端运行一些额外的 js 代码或在后端运行一些 api 请求。谢谢

4

1 回答 1

0

通过说您希望模块能够“访问”商店的所有(前端)页面,我不确定您正在寻找什么。模块必须放置在布局中,并且可以将布局分配给多个页面。

每个布局都可以包含专门分配给您可以指定(和自定义)的区域的元素。例如,您可能希望在公共标头中为您的模块创建一个特殊位置。您只需在自己指定的文件夹中创建控制器、语言和视图文件(在我的示例中,我将使用 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 位置。那应该这样做。

于 2016-12-30T21:00:01.063 回答