Разработка Opencart: изменить положение слайд-шоу - PullRequest
1 голос
/ 01 ноября 2011

Я работаю с opencart. Я хочу изменить слайд-шоу с «содержимого сверху» на «заголовок». Это означает, что я хочу переместить слайд-шоу над верхним меню, и оно также будет отображаться на каждой странице, а не только на главной странице.

Я сделал следующие шаги: 1-й: добавьте позицию с именем «header» в три файла «slideshow.php» администратора (папки контроллера, язык и просмотр). 2-е: я изменил header.php: (добавьте эти коды после блока кода "// menu" в папке контроллера)

    $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();

3-й: добавить коды в файл header.tpl: неподвижно, перед блоком кода "// меню". (в папке просмотра)

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

Теперь проблема в следующем: коды javascript в banner.tpl больше не будут работать. К счастью, javascript-коды в slideshow.tpl по-прежнему работают.

Таким образом, в настоящее время веб-сайт отображает баннер в позиции заголовка перед меню на домашней странице, но эффект слайд-шоу - нет. Если вы установите две фотографии, они будут отображаться на первой странице. Они больше не изменятся друг с другом.

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

прежде всего, вы не можете просто пойти дальше и скопировать прошлое

ты должен понимать, что будешь делать

Слайд-шоу - это слайд-шоу.tpl и слайд-шоу.php чтобы включить JavaScript, вам нужна следующая строка кода в вашем /controller/commun/header.php

$this->document->addScript('catalog/view/javascript/jquery/nivo-slider/jquery.nivo.slider.pack.js');

чтобы JavaScript мог работать

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

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

http://www.opencart.com/index.php?route=extension/extension/info&token=extension_id=14467

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

Привет

...