将新模块位置添加到OpenCart 2

时间:2015-02-16 13:54:31

标签: php opencart2.x

我想为模块添加更多位置。如何在opencart 2中添加新的模块位置?

在这里,我喜欢这些信息。但是,它仅适用于OpenCart旧版本。 http://www.opencartnews.com/tutorials/adding-new-modules-positions/

如何在Opencart 2中实现同样的目标?

请帮忙......!

2 个答案:

答案 0 :(得分:3)

我知道它有点迟了,但它可能对其他人有帮助,上面的回答也帮助了我,但是对于新手来说,我很容易理解我正在写这篇文章。

我在其中插入新职位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">

所以在将整个部分从表格的开头复制到关闭表格并将其粘贴到下面并将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]在中创建一个新的控制器文件  目录/ 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; ?>

to catalog / view / theme / themename / template / common / home.tpl

enter image description here

答案 1 :(得分:2)

您可以通过修改以下核心文件来实现此目的。

  1. 管理员/视图/模板/设计/ layout_form.tpl 在此选择标记中添加新位置

    <select name="layout_module[<?php echo $module_row; ?>][position]"

    以及文件底部的此方法

    function addModule() {

  2. 然后你必须在catalog / view / theme / default / template / common中添加一个模板和一个控制器 你可以使用与content_top.php&amp;中相同的代码。 content_top.tpl,只需将文件重命名为新的位置名称。

  3. 然后在Home控制器或需要此位置的任何其他页面中,您必须添加

    $data['new_position'] = $this->load->controller('common/new_position');

  4. 将其添加到控制器后,需要将其添加到模板文件中。添加到要在其上显示自定义位置的所有页面模板。

    <?php echo $new_position; ?>

  5. 例如,要在主页上显示位置,您需要将<?php echo $new_position; ?>添加到catalog/view/theme/YOUR_THEME/template/common/home.tpl