opencart 1.5 как добавить модуль в шапку

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


person Fahad Ur Rehman    schedule 14.09.2011    source источник


Ответы (8)


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

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

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

$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 } ?>

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

После этого вы должны добавить эти коды в catalog/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: изменить положение слайд-шоу

person huawei chen    schedule 01.11.2011
comment
не забудьте добавить строку javascript, подобную этой. html += ' ‹option value=header›‹?php echo $text_header; ?>'; - person mysterious; 23.11.2011
comment
Подскажите, пожалуйста, в каком файле какой код должен находиться? Я имею в виду первый код (страница администратора). Я пытаюсь добавить позицию на свой сайт. - person Code Lover; 21.05.2012
comment
Проблема со слайд-шоу в заголовке заключается в том, что заголовок не включает в себя правильный JS или CSS. Достаточно открыть файл catalog/controller/module/slideshow.php и скопировать строку добавления JS-ресурса в catalog/controller/common/header.php. Поэтому я добавил все ресурсы JS и/или CSS из любых модулей в свой заголовок и удалил их из этих модулей (чтобы они не включались дважды). - person shadyyx; 11.09.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" />

и слайдер будет работать

person iLaPis    schedule 05.02.2012
comment
Я пробовал это, но это не работает. Хоть и учитываются стили CSS (там просто пустое место там, где должен быть слайдер), но все равно ошибка JS: $("#slideshow0").nivoSlider is not a function $('#slideshow0').nivoSlider();. - person shadyyx; 11.05.2012

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

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

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

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

$this->data['modules']

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

person qaharmdz    schedule 19.09.2011

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

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

person Dreamvention    schedule 17.06.2012

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

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

С уважением

person Dreamvention    schedule 20.11.2013

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

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

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

person RydelHouse    schedule 21.03.2014
comment
Пожалуйста, включите также контент из ссылки на случай, если ссылка испортится. Это будет полный ответ. - person bland; 21.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;?>

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

person Neo    schedule 03.04.2014

Вы должны знать, что ваша новая должность — это новый ребенок.

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

person DigitCart    schedule 28.10.2015