将新模块位置添加到 OpenCart 2
Adding New Modules Positions to OpenCart 2
我想为模块添加更多职位。如何在 opencart 2 中添加新的模块位置?
在这里,我喜欢这个信息。但是,它仅适用于 OpenCart 旧版本。 http://www.opencartnews.com/tutorials/adding-new-modules-positions/
如何在 Opencart 2 中实现同样的事情?
请帮忙...!
您可以通过修改以下核心文件来实现。
admin/view/template/design/layout_form.tpl
在此 select 标签中添加您的新职位
<select name="layout_module[<?php echo $module_row; ?>][position]"
以及文件底部的这个方法
function addModule() {
然后你必须在catalog/view/theme/default/template/common中添加一个模板和一个控制器
您可以使用与 content_top.php & content_top.tpl 中相同的代码,只需将文件重命名为您的新职位名称即可。
然后在 Home controller 或任何其他需要此位置的页面中,您必须添加
$data['new_position'] = $this->load->controller('common/new_position');
添加到controller后,需要将其添加到模板文件中。添加到您要显示自定义位置的所有页面模板。
<?php echo $new_position; ?>
例如,要在主页上显示位置,您需要将 <?php echo $new_position; ?>
添加到 catalog/view/theme/YOUR_THEME/template/common/home.tpl
我知道有点晚了,但它可能对其他人有帮助,上面的答案也帮助了我,但为了让新手容易理解,我正在写这个。
我正在其中插入新位置content_footer。
已针对 2.3.0.2 进行测试
我们将首先编辑管理端的文件
1] 转到 admin/view/template/design/layout_form.tpl
默认情况下,opencart 为模块提供 4 个位置,找到以下代码
<table id="module-content-bottom" class="table table-striped table-bordered table-hover">
所以在复制从 table 开始到 table 结束的整个部分并将其粘贴到下面并将 content_bottom 更改为 content_footer
<table id="module-content-footer" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<td class="text-center"><?php echo $text_content_footer; ?></td>
</tr>
</thead>
<tbody>
<?php foreach ($layout_modules as $layout_module) { ?>
<?php if ($layout_module['position'] == 'content_footer') { ?>
<tr id="module-row<?php echo $module_row; ?>">
<td class="text-left"><div class="input-group">
<select name="layout_module[<?php echo $module_row; ?>][code]" class="form-control input-sm">
<?php foreach ($extensions as $extension) { ?>
<optgroup label="<?php echo $extension['name']; ?>">
<?php if (!$extension['module']) { ?>
<?php if ($extension['code'] == $layout_module['code']) { ?>
<option value="<?php echo $extension['code']; ?>" selected="selected"><?php echo $extension['name']; ?></option>
<?php } else { ?>
<option value="<?php echo $extension['code']; ?>"><?php echo $extension['name']; ?></option>
<?php } ?>
<?php } else { ?>
<?php foreach ($extension['module'] as $module) { ?>
<?php if ($module['code'] == $layout_module['code']) { ?>
<option value="<?php echo $module['code']; ?>" selected="selected"><?php echo $module['name']; ?></option>
<?php } else { ?>
<option value="<?php echo $module['code']; ?>"><?php echo $module['name']; ?></option>
<?php } ?>
<?php } ?>
<?php } ?>
</optgroup>
<?php } ?>
</select>
<input type="hidden" name="layout_module[<?php echo $module_row; ?>][position]" value="<?php echo $layout_module['position']; ?>" />
<input type="hidden" name="layout_module[<?php echo $module_row; ?>][sort_order]" value="<?php echo $layout_module['sort_order']; ?>" />
<div class="input-group-btn"><a href="<?php echo $layout_module['edit']; ?>" type="button" data-toggle="tooltip" title="<?php echo $button_edit; ?>" target="_blank" class="btn btn-primary btn-sm"><i class="fa fa-pencil"></i></a>
<button type="button" onclick="$('#module-row<?php echo $module_row; ?>').remove();" data-toggle="tooltip" title="<?php echo $button_remove; ?>" class="btn btn-danger btn-sm"><i class="fa fa fa-minus-circle"></i></button>
</div>
</div></td>
</tr>
<?php $module_row++; ?>
<?php } ?>
<?php } ?>
</tbody>
<tfoot>
<tr>
<td class="text-left"><div class="input-group">
<select class="form-control input-sm">
<?php foreach ($extensions as $extension) { ?>
<optgroup label="<?php echo $extension['name']; ?>">
<?php if (!$extension['module']) { ?>
<option value="<?php echo $extension['code']; ?>"><?php echo $extension['name']; ?></option>
<?php } else { ?>
<?php foreach ($extension['module'] as $module) { ?>
<option value="<?php echo $module['code']; ?>"><?php echo $module['name']; ?></option>
<?php } ?>
<?php } ?>
</optgroup>
<?php } ?>
</select>
<div class="input-group-btn">
<button type="button" onclick="addModule('content-footer');" data-toggle="tooltip" title="<?php echo $button_module_add; ?>" class="btn btn-primary btn-sm"><i class="fa fa-plus-circle"></i></button>
</div>
</div></td>
</tr>
</tfoot>
</table>
2] 现在找到函数 addModule() 并找到下面的行
$('#module-column-left, #module-column-right, #module-content-top, #module-content-bottom ').delegate
现在添加#module-content-footer
$('#module-column-left, #module-column-right, #module-content-top, #module-content-bottom , #module-content-footer').delegate(
触发器行下方的相同方法
$('#module-column-left, #module-column-right, #module-content-top, #module-content-bottom , #module-content-footer' ).trigger
3] 在 admin/controller/design/layout.php
找到下面的函数
protected function getForm()
其中这一行
$data['text_content_footer'] = $this->language->get('text_content_footer');
4] 现在在 admin/language/en-gb/layout.php
中添加以下行
$_['text_content_footer'] = 'Content Footer';
前端文件更改
1] 在 catalog/view/theme/themename/template/common/content_footer.tpl
中创建一个新的模板文件
<?php foreach ($modules as $module) { ?>
2] 创建一个新的控制器文件
Catalog/controller/common/content_footer.php 并放置以下代码
<?php
class ControllerCommonContentFooter extends Controller {
public function index() {
$this->load->model('design/layout');
if (isset($this->request->get['route'])) {
$route = (string)$this->request->get['route'];
} else {
$route = 'common/home';
}
$layout_id = 0;
if ($route == 'product/category' && isset($this->request->get['path'])) {
$this->load->model('catalog/category');
$path = explode('_', (string)$this->request->get['path']);
$layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path));
}
if ($route == 'product/product' && isset($this->request->get['product_id'])) {
$this->load->model('catalog/product');
$layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']);
}
if ($route == 'information/information' && isset($this->request->get['information_id'])) {
$this->load->model('catalog/information');
$layout_id = $this->model_catalog_information->getInformationLayoutId($this->request->get['information_id']);
}
if (!$layout_id) {
$layout_id = $this->model_design_layout->getLayout($route);
}
if (!$layout_id) {
$layout_id = $this->config->get('config_layout_id');
}
$this->load->model('extension/module');
$data['modules'] = array();
$modules = $this->model_design_layout->getLayoutModules($layout_id, 'content_footer');
foreach ($modules as $module) {
$part = explode('.', $module['code']);
if (isset($part[0]) && $this->config->get($part[0] . '_status')) {
$module_data = $this->load->controller('extension/module/' . $part[0]);
if ($module_data) {
$data['modules'][] = $module_data;
}
}
if (isset($part[1])) {
$setting_info = $this->model_extension_module->getModule($part[1]);
if ($setting_info && $setting_info['status']) {
$output = $this->load->controller('extension/module/' . $part[0], $setting_info);
if ($output) {
$data['modules'][] = $output;
}
}
}
}
return $this->load->view('common/content_footer', $data);
}}
3] 现在在 catalog/controller/common/home.php
中添加以下行
$data['content_footer'] = $this->load->controller('common/content_footer');
4] 最后,要在主页上显示位置,您将添加
<?php echo $content_footer; ?>
到catalog/view/theme/themename/template/common/home.tpl
我想为模块添加更多职位。如何在 opencart 2 中添加新的模块位置?
在这里,我喜欢这个信息。但是,它仅适用于 OpenCart 旧版本。 http://www.opencartnews.com/tutorials/adding-new-modules-positions/
如何在 Opencart 2 中实现同样的事情?
请帮忙...!
您可以通过修改以下核心文件来实现。
admin/view/template/design/layout_form.tpl 在此 select 标签中添加您的新职位
<select name="layout_module[<?php echo $module_row; ?>][position]"
以及文件底部的这个方法
function addModule() {
然后你必须在catalog/view/theme/default/template/common中添加一个模板和一个控制器 您可以使用与 content_top.php & content_top.tpl 中相同的代码,只需将文件重命名为您的新职位名称即可。
然后在 Home controller 或任何其他需要此位置的页面中,您必须添加
$data['new_position'] = $this->load->controller('common/new_position');
添加到controller后,需要将其添加到模板文件中。添加到您要显示自定义位置的所有页面模板。
<?php echo $new_position; ?>
例如,要在主页上显示位置,您需要将 <?php echo $new_position; ?>
添加到 catalog/view/theme/YOUR_THEME/template/common/home.tpl
我知道有点晚了,但它可能对其他人有帮助,上面的答案也帮助了我,但为了让新手容易理解,我正在写这个。
我正在其中插入新位置content_footer。
已针对 2.3.0.2 进行测试
我们将首先编辑管理端的文件
1] 转到 admin/view/template/design/layout_form.tpl
默认情况下,opencart 为模块提供 4 个位置,找到以下代码
<table id="module-content-bottom" class="table table-striped table-bordered table-hover">
所以在复制从 table 开始到 table 结束的整个部分并将其粘贴到下面并将 content_bottom 更改为 content_footer
<table id="module-content-footer" class="table table-striped table-bordered table-hover">
<thead>
<tr>
<td class="text-center"><?php echo $text_content_footer; ?></td>
</tr>
</thead>
<tbody>
<?php foreach ($layout_modules as $layout_module) { ?>
<?php if ($layout_module['position'] == 'content_footer') { ?>
<tr id="module-row<?php echo $module_row; ?>">
<td class="text-left"><div class="input-group">
<select name="layout_module[<?php echo $module_row; ?>][code]" class="form-control input-sm">
<?php foreach ($extensions as $extension) { ?>
<optgroup label="<?php echo $extension['name']; ?>">
<?php if (!$extension['module']) { ?>
<?php if ($extension['code'] == $layout_module['code']) { ?>
<option value="<?php echo $extension['code']; ?>" selected="selected"><?php echo $extension['name']; ?></option>
<?php } else { ?>
<option value="<?php echo $extension['code']; ?>"><?php echo $extension['name']; ?></option>
<?php } ?>
<?php } else { ?>
<?php foreach ($extension['module'] as $module) { ?>
<?php if ($module['code'] == $layout_module['code']) { ?>
<option value="<?php echo $module['code']; ?>" selected="selected"><?php echo $module['name']; ?></option>
<?php } else { ?>
<option value="<?php echo $module['code']; ?>"><?php echo $module['name']; ?></option>
<?php } ?>
<?php } ?>
<?php } ?>
</optgroup>
<?php } ?>
</select>
<input type="hidden" name="layout_module[<?php echo $module_row; ?>][position]" value="<?php echo $layout_module['position']; ?>" />
<input type="hidden" name="layout_module[<?php echo $module_row; ?>][sort_order]" value="<?php echo $layout_module['sort_order']; ?>" />
<div class="input-group-btn"><a href="<?php echo $layout_module['edit']; ?>" type="button" data-toggle="tooltip" title="<?php echo $button_edit; ?>" target="_blank" class="btn btn-primary btn-sm"><i class="fa fa-pencil"></i></a>
<button type="button" onclick="$('#module-row<?php echo $module_row; ?>').remove();" data-toggle="tooltip" title="<?php echo $button_remove; ?>" class="btn btn-danger btn-sm"><i class="fa fa fa-minus-circle"></i></button>
</div>
</div></td>
</tr>
<?php $module_row++; ?>
<?php } ?>
<?php } ?>
</tbody>
<tfoot>
<tr>
<td class="text-left"><div class="input-group">
<select class="form-control input-sm">
<?php foreach ($extensions as $extension) { ?>
<optgroup label="<?php echo $extension['name']; ?>">
<?php if (!$extension['module']) { ?>
<option value="<?php echo $extension['code']; ?>"><?php echo $extension['name']; ?></option>
<?php } else { ?>
<?php foreach ($extension['module'] as $module) { ?>
<option value="<?php echo $module['code']; ?>"><?php echo $module['name']; ?></option>
<?php } ?>
<?php } ?>
</optgroup>
<?php } ?>
</select>
<div class="input-group-btn">
<button type="button" onclick="addModule('content-footer');" data-toggle="tooltip" title="<?php echo $button_module_add; ?>" class="btn btn-primary btn-sm"><i class="fa fa-plus-circle"></i></button>
</div>
</div></td>
</tr>
</tfoot>
</table>
2] 现在找到函数 addModule() 并找到下面的行
$('#module-column-left, #module-column-right, #module-content-top, #module-content-bottom ').delegate
现在添加#module-content-footer
$('#module-column-left, #module-column-right, #module-content-top, #module-content-bottom , #module-content-footer').delegate(
触发器行下方的相同方法
$('#module-column-left, #module-column-right, #module-content-top, #module-content-bottom , #module-content-footer' ).trigger
3] 在 admin/controller/design/layout.php 找到下面的函数
protected function getForm()
其中这一行
$data['text_content_footer'] = $this->language->get('text_content_footer');
4] 现在在 admin/language/en-gb/layout.php
中添加以下行$_['text_content_footer'] = 'Content Footer';
前端文件更改
1] 在 catalog/view/theme/themename/template/common/content_footer.tpl
中创建一个新的模板文件<?php foreach ($modules as $module) { ?>
2] 创建一个新的控制器文件 Catalog/controller/common/content_footer.php 并放置以下代码
<?php
class ControllerCommonContentFooter extends Controller {
public function index() {
$this->load->model('design/layout');
if (isset($this->request->get['route'])) {
$route = (string)$this->request->get['route'];
} else {
$route = 'common/home';
}
$layout_id = 0;
if ($route == 'product/category' && isset($this->request->get['path'])) {
$this->load->model('catalog/category');
$path = explode('_', (string)$this->request->get['path']);
$layout_id = $this->model_catalog_category->getCategoryLayoutId(end($path));
}
if ($route == 'product/product' && isset($this->request->get['product_id'])) {
$this->load->model('catalog/product');
$layout_id = $this->model_catalog_product->getProductLayoutId($this->request->get['product_id']);
}
if ($route == 'information/information' && isset($this->request->get['information_id'])) {
$this->load->model('catalog/information');
$layout_id = $this->model_catalog_information->getInformationLayoutId($this->request->get['information_id']);
}
if (!$layout_id) {
$layout_id = $this->model_design_layout->getLayout($route);
}
if (!$layout_id) {
$layout_id = $this->config->get('config_layout_id');
}
$this->load->model('extension/module');
$data['modules'] = array();
$modules = $this->model_design_layout->getLayoutModules($layout_id, 'content_footer');
foreach ($modules as $module) {
$part = explode('.', $module['code']);
if (isset($part[0]) && $this->config->get($part[0] . '_status')) {
$module_data = $this->load->controller('extension/module/' . $part[0]);
if ($module_data) {
$data['modules'][] = $module_data;
}
}
if (isset($part[1])) {
$setting_info = $this->model_extension_module->getModule($part[1]);
if ($setting_info && $setting_info['status']) {
$output = $this->load->controller('extension/module/' . $part[0], $setting_info);
if ($output) {
$data['modules'][] = $output;
}
}
}
}
return $this->load->view('common/content_footer', $data);
}}
3] 现在在 catalog/controller/common/home.php
中添加以下行$data['content_footer'] = $this->load->controller('common/content_footer');
4] 最后,要在主页上显示位置,您将添加
<?php echo $content_footer; ?>
到catalog/view/theme/themename/template/common/home.tpl