Дополнительные меню

Статус
В этой теме нельзя размещать новые ответы.

Mishiko

Пользователь
Здравствуйте. Хочу реализовать вывод статей в двух зонах сайта Хейдер и Футер вывод статей как вот в шаблоне Revolution opencart 2.3 не нашел нормальной инструкции
Screenshot_5.jpg
 

xjfg

Пользователь
Хотите именно модулем? можно просто поднять меню из футера копированием, просто будет дублироваться одинаковое меню
 

Mishiko

Пользователь
Будет разное меню я уже разобрался напишу инструкцию как реализовать
 

Mishiko

Пользователь
Реализовал на opencart pro 2.3 Думаю на обычный opencart 2.3 будет работать

Открываем базу данных и таблицу oc_information добавляем столбец с названием menu рядом со столбцом bottom: Тип - int, длина/значение - 1, по умолчанию - выбираем "Как определено" и в поле проставляем значение 0.

Пример моей таблицы на чистом установленном

--
-- Структура таблицы `oc_information`
--

CREATE TABLE IF NOT EXISTS `oc_information` (
`information_id` int(11) NOT NULL,
`bottom` int(1) NOT NULL DEFAULT '0',
`menu` int(1) NOT NULL DEFAULT '0',
`sort_order` int(3) NOT NULL DEFAULT '0',
`status` tinyint(1) NOT NULL DEFAULT '1',
`noindex` tinyint(1) NOT NULL DEFAULT '1'
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=utf8;

--
-- Дамп данных таблицы `oc_information`
--

INSERT INTO `oc_information` (`information_id`, `bottom`, `menu`, `sort_order`, `status`, `noindex`) VALUES
(3, 1, 1, 3, 0, 1),
(4, 1, 1, 1, 1, 1),
(5, 1, 1, 4, 0, 1),
(6, 1, 1, 2, 1, 1),
(7, 1, 1, 7, 1, 1),
(8, 1, 1, 4, 1, 1),
(9, 1, 1, 3, 1, 1);

Далее открываем файл admin/controller/catalog/information.php В тело функции getForm() примерно в 398 строке вставляем слудующий код:

PHP:
$data['entry_menu'] = $this->language->get('entry_menu');
$data['help_menu'] = $this->language->get('help_menu');
if (isset($this->request->post['menu'])) {
    $data['menu'] = $this->request->post['menu'];
} elseif (!empty($information_info)) {
    $data['menu'] = $information_info['menu'];
} else {
    $data['menu'] = 0;
}
Далее отредактируем файл модели статьи admin/model/catalog/information.php , а именно функцию public function addInformation($data), примерно 4 строка, доавим в sql-запрос после кода:
Находим:
PHP:
bottom = '" . (isset($data['bottom']) ? (int)$data['bottom'] : 0) . "',
после него вставляем (как бы продолжаем функцию):
Код:
  menu = '" . (isset($data['menu']) ? (int)$data['menu'] : 0) . "',
и такой же код добавим в это же место в функцию public function editInformation.

Теперь добавим в файл шаблона редактирования статьи admin/view/template/catalog/information_form.tpl добавим вывод нужных нам чекбоксов во вкладку "Данные" (примерно 127 строка) после очередного дива с классом form-group, где выводится чекбокс отображения внизу (bottom):

PHP:
<div class="form-group">
    <label class="col-sm-2 control-label" for="input-menu"><span data-toggle="tooltip" title="<?php echo $help_menu; ?>"><?php echo $entry_menu; ?></span></label>
    <div class="col-sm-10">
        <div class="checkbox">
            <label>
            <?php if ($menu) { ?>
            <input type="checkbox" name="menu" value="1" checked="checked" id="input-menu" />
            <?php } else { ?>
            <input type="checkbox" name="menu" value="1" id="input-menu" />
            <?php } ?>
   </label>
   </div>
    </div>
</div>
Далее добавим в языковой файл текстовой обозначение переменных admin/language/ru-ru/catalog/information.php добавляем

Код:
$_['entry_menu']           = 'Отображить в меню';
$_['help_menu']            = 'Показывать в главном меню';
Теперь редактируем файл контроллера шапки catalog/controller/common/header.php и добавляем вывод статей (я втавил до 52 строки перед $this->load->language('common/header');):

PHP:
$this->load->model('catalog/information');
$data['informations'] = array();
foreach ($this->model_catalog_information->getInformations() as $result) {
    if ($result['menu']) {
        $data['informations'][] = array(
            'title' => $result['title'],
             'href'  => $this->url->link('information/information', 'information_id=' . $result['information_id'])
        );
    }
}
Теперь редактируем файл шаблона шапки. Либо добавляем в код списка меню catalog/view/theme/[ваша тема]/template/common/header.tpl

PHP:
<?php if ($informations) { ?>
    <?php foreach ($informations as $information) { ?>
        <li><a href="<?php echo $information['href']; ?>"><?php echo $information['title']; ?></a></li>
    <?php } ?>
<?php } ?>
Теперь можно менять внешний вид и стили как вам угодно, создавать разные области меню(по этому примеру, выводить куда угодно просто нужно будет в соответствующем контроллере прописать.
 
Можно хитрым образом с помощью JS

Просто дублировать html контент на странице в подвал.
 
Просто покладите html в переменную и напечатайте через document.write
 
<script> var footer_logo= document.querySelector("#logo")
document.write(footer_logo.innerHTML);


</script>

Вот как печатал лого из шапки в подвал сайта
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху