Схема (layout): какую выбрать чтобы модуль был на всех страницах?

sitecreator

Полезный
Регистрация
1 Май 2013
Сообщения
209
Реакции
19
Возьмем, к примеру, модуль "Категории".

Я желаю чтобы он располагался в левой колонке на всех страницах.
Как это сделать, добавив модуль один раз в админке?
Я предполагал, что при этом нужно выбрать схему "дефолт" и после этого модуль появится на всех страницах.
А не работает.

Получается, что нужно модуль добавлять для всех схем вручную?
А что же тогда такое схема "дефолт"?
f41585ea973748128a7c517.png
 
как раз недавно сделал тоже самое для нового магазина - отображение категорий товаров на всех страницах магазина.
все верно на вашем скрине, просто добавьте остальные модули сюда же, с теми же настройками, и категории появятся на всех страницах.
у меня получилось всего 9 модулей тут. Это же всего лишь несколько раз нажать по кнопкам, не так уж и трудно. Одним разом не получится, а если и есть стороннее решение то это будет все равно сложнее:)
и в этой системе есть плюс - можно не отображать категории например там, где это совсем не нужно. Например я не добавлял модуль affiliate, чтобы на страницах партнерской программы не отображались категории.
 
Делаем следующим образом
Открываем catalog\controller\common\column_left.php
и перед строкой
Код:
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') {
добавляем
Код:
$this->children = array(
'module/cart'
);
где вместо cart - пишем имя нужного модуля.
следующим шагом открываем
catalog\view\theme\default\template\common\column_left.tpl
и выводим в нем модуль переменной $название файла с контроллером модуля

Код:
<?php if ($modules) { ?>
<div id="column-left">
<?php echo $cart; ?>
  <?php foreach ($modules as $module) { ?>
  <?php echo $module; ?>
  <?php } ?>
</div>
<?php } ?>

P.S. позиция будет фиксированая.
 
В админке - система / дизайн / схемы
В схеме defaul прописываем пути к страницам на которых нужно выводить модули, например:
product/category
product/category
Удаляем дублирующие схемы или путь в них, иначе default работать не будет.
В настройках модуля будет достаточно поставить default чтобы он отображался на всех страницах прописанных в схеме.
 
Мне 8 модулей надо вывести на все страницы сайта.
Как это лучше сделать, прописывать пути к страницам в дефолт и назначать дефолт этим модулям?
И вообще, не понимаю логики. Почему изначально в опенкарт нет схемы для вывода модуля на все страницы?
 
Последнее редактирование:
Мне 8 модулей надо вывести на все страницы сайта.
Как это лучше сделать, прописывать пути к страницам в дефолт и назначать дефолт этим модулям?
И вообще, не понимаю логики. Почему изначально в опенкарт нет схемы для вывода модуля на все страницы?

Эта схема не для этого, она предназначена для случаев если не удалось выбрать макет отображения, собственно в эту схему будут выводится модули для которых не существует макета, если не ошибаюсь, то чтоб в нее забраться надо грохнуть темплейты, а не прописывать к ним пути.
Теоретически надо подправить контроллеры column_left.php, column_right.php, content_bottom.php, content_top.php (путь до них catalog\controller\common\) во-первых создайте схему и назовите ее произвольно, при редактировании схемы в урле вы можете видеть ее айдишник. Далее в указанных выше файлах ищите строчку на (примере content_bottom.php)
Код:
if ($module['layout_id'] == $layout_id && $module['position'] == 'content_bottom' && $module['status']) {
и дописываете ее вот так
Код:
if (($module['layout_id'] == $layout_id || $module['layout_id'] == "ваш айди без кавычки") && $module['position'] == 'content_bottom' && $module['status']) {
может так...
p.s. Проверил, работает.
 
Последнее редактирование:
нужно удалить все эти схемы к чертовой бабушке. И оставить одну для всего магазина. Даже мануал где то видел как сделать так.
 
Надо поставить модуль All Pages Layout for Opencart (вывод модулей на всех страницах сайта) VQMod
Для просмотра ссылки Войди или Зарегистрируйся

В админке: система - дизайн - схемы, добавляем новый макет "Все страницы". Добавляем новый путь, поле "путь" оставляем пустым.
Заходим в модуль, который хотим вывести на все страницы, выбираем макет "Все страницы".
Теперь модуль будет выводиться на всех страницах сайта.
 
  • Нравится
Реакции: ILM
Назад
Сверху