OpenCart 1.5, как добавить модуль в шапку - PullRequest
8 голосов
/ 14 сентября 2011

Пожалуйста, кто-нибудь скажет мне, как я могу расположить модули, такие как слайдер или баннер, в заголовке или как мы можем определить дополнительные области для модулей.

Ответы [ 8 ]

7 голосов
/ 01 ноября 2011

Ну, я работаю над этим.

Во-первых, вы должны добавить новую позицию на странице администратора. Это означает, что вы должны изменить три файла и добавить несколько строк в каждый.

Например, если вы хотите добавить слайд-шоу в заголовок, вы должны добавить новую позицию в

$this->data['text_header'] = $this->language->get('text_header'); // in admin/controller/slideshow.php

/////////////////////////////////////////////// /

$_['text_header']         = 'Header'; // in admin/language/slideshow.php

/////////////////////////////////////////////// /

<?php if ($module['position'] == 'header') { ?> // in admin/view/slideshow.tpl
            <option value="header" selected="selected"><?php echo $text_header; ?></option>
            <?php } else { ?>
            <option value="header"><?php echo $text_header; ?></option>
            <?php } ?>

Затем была определена новая позиция для слайд-шоу. и вы можете выбрать его на странице администратора.

После этого вы должны добавить эти коды в каталог / view / header.tpl

 <?php foreach ($modules as $module) { ?>
    <?php echo $module; ?>
    <?php } ?>

Затем в каталог / controller / header.php добавьте несколько кодов, как это делает content_top.php: $ layout_id = 1;

$module_data = array();

$this->load->model('setting/extension');

$extensions = $this->model_setting_extension->getExtensions('module');      

foreach ($extensions as $extension) {
    $modules = $this->config->get($extension['code'] . '_module');

    if ($modules) {
        foreach ($modules as $module) {
            if ($module['layout_id'] == $layout_id && $module['position'] == 'header' && $module['status']) {
                $module_data[] = array(
                    'code'       => $extension['code'],
                    'setting'    => $module,
                    'sort_order' => $module['sort_order']
                );              
            }
        }
    }
}

$sort_order = array(); 

foreach ($module_data as $key => $value) {
    $sort_order[$key] = $value['sort_order'];
}

array_multisort($sort_order, SORT_ASC, $module_data);

$this->data['modules'] = array();

foreach ($module_data as $module) {
    $module = $this->getChild('module/' . $module['code'], $module['setting']);

    if ($module) {
        $this->data['modules'][] = $module;
    }
}


if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/header.tpl')) {
    $this->template = $this->config->get('config_template') . '/template/common/header.tpl';
} else {
    $this->template = 'default/template/common/header.tpl';
}

$this->render();

Тогда все сделано.

Единственной проблемой для этого кода является то, что слайд-шоу может отображаться не как слайд-шоу, а как статичное изображение или изображения.

Жаль, что вы не можете решить это и ответить мне. Мой вопрос пост: Разработка Opencart: изменить положение слайд-шоу

2 голосов
/ 05 февраля 2012

сделайте то, что написал Huawei Chen, и добавьте их в шапку:

<script type="text/javascript" src="catalog/view/javascript/jquery/nivo-slider/jquery.nivo.slider.pack.js"></script>
<link rel="stylesheet" type="text/css" href="catalog/view/theme/default/stylesheet/slideshow.css" media="screen" />

и ползунок будет работать

1 голос
/ 17 июня 2012

Вы также можете использовать расширение, которое помещает 2 позиции в верхний и нижний колонтитулы. Он создает такие же крючки, как column_left и content_top и т. Д.

работает с VQmod для opencart 1.5x

1 голос
/ 19 сентября 2011

Вы можете узнать из контроллера / common / column_right.php

Проверить положение модуля (строка 50), вы можете адаптировать его к «заголовку»:

$module['position'] == 'column_right'

Установить вывод (строка 69), вы можете адаптировать его к чему-то вроде "header_mod":

$this->data['modules']

Вам необходимо изменить модуль в admin, чтобы показать дополнительную позицию модуля.
Нет " header"Опции положения модуля на странице администратора.

0 голосов
/ 28 октября 2015

Вы должны знать, что ваша новая позиция - это новый ребенок.

file: catalog/controller/common/header.php

$this->children = array(
'module/language',
'module/currency',
'module/cart'
);

добавьте свою новую позицию, например так:

$this->children = array(
'common/content_new',
'module/language',
'module/currency',
'module/cart'
);

теперь вы можете отображать вашу новую позицию в своемheader.tpl

0 голосов
/ 03 апреля 2014

Я прочитал весь ваш ответ. Забудь обо всем Вызвать любой модуль в раздел заголовка очень просто.

Откройте файл catalog/controller/common/header.php

$this->data['YOUR_MODULE_NAME'] = $this->getChild('module/YOUR_MODULE_NAME');

Теперь откройте .tpl файл заголовка, который находится по адресу catalog/view/theme/YOUR_THEME/template/common/header.tpl

и выводите модуль желаний в любое время, например: <?php echo $YOUR_MODULE_NAME;?>

Вот и все. Вы сделали.

0 голосов
/ 21 марта 2014

Это руководство помогло мне:

http://www.mywork.com.au/blog/create-new-module-layout-position-opencart-1-5/

Я использовал версию Opencart 1.5.6.1.

0 голосов
/ 20 ноября 2013

Я думаю, что это расширение сделает вашу жизнь очень простой.http://www.opencart.com/index.php?route=extension/extension/info&token=extension_id=14467

Вы можете добавить неограниченное количество позиций в заголовок, добавить столбцы и изменить их ширину на всем протяжении администратора

С уважением

...