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

Тема в разделе "Opencart", создана пользователем sitecreator, 16 май 2013.

Информация :
Внимание форумчане! При создании тем, или выкладывании какой-либо информации проверьте в какой ветке форума вы находитесь! Не путайте Opencart и Opencart2. При несоблюдении данного условия выносится соответствующее наказание! И потом не говорите что вас НЕ ПРЕДУПРЕЖДАЛИ! По возможности используйте обменники mail, yandex, google, dropbox, rghost Дабы избежать просьб перезалить и проблем с рекламой!
Модераторы: ZiX
  1. sitecreator

    sitecreator

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

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

    Получается, что нужно модуль добавлять для всех схем вручную?
    А что же тогда такое схема "дефолт"?
    [​IMG]
     
  2. TestDriver

    TestDriver Создатель

    Регистр.:
    21 апр 2013
    Сообщения:
    26
    Симпатии:
    3
    как раз недавно сделал тоже самое для нового магазина - отображение категорий товаров на всех страницах магазина.
    все верно на вашем скрине, просто добавьте остальные модули сюда же, с теми же настройками, и категории появятся на всех страницах.
    у меня получилось всего 9 модулей тут. Это же всего лишь несколько раз нажать по кнопкам, не так уж и трудно. Одним разом не получится, а если и есть стороннее решение то это будет все равно сложнее:)
    и в этой системе есть плюс - можно не отображать категории например там, где это совсем не нужно. Например я не добавлял модуль affiliate, чтобы на страницах партнерской программы не отображались категории.
     
  3. sandi

    sandi

    Регистр.:
    30 май 2008
    Сообщения:
    314
    Симпатии:
    165
    Делаем следующим образом
    Открываем 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. позиция будет фиксированая.
     
    werner нравится это.
  4. alisha59

    alisha59 Создатель

    Регистр.:
    26 апр 2013
    Сообщения:
    22
    Симпатии:
    11
    В админке - система / дизайн / схемы
    В схеме defaul прописываем пути к страницам на которых нужно выводить модули, например:
    product/category
    product/category
    Удаляем дублирующие схемы или путь в них, иначе default работать не будет.
    В настройках модуля будет достаточно поставить default чтобы он отображался на всех страницах прописанных в схеме.
     
    werner нравится это.
  5. anfriska

    anfriska Постоялец

    Регистр.:
    3 окт 2013
    Сообщения:
    111
    Симпатии:
    31
    Мне 8 модулей надо вывести на все страницы сайта.
    Как это лучше сделать, прописывать пути к страницам в дефолт и назначать дефолт этим модулям?
    И вообще, не понимаю логики. Почему изначально в опенкарт нет схемы для вывода модуля на все страницы?
     
    Последнее редактирование: 5 окт 2013
  6. White_S

    White_S

    Регистр.:
    27 май 2009
    Сообщения:
    474
    Симпатии:
    95
    Эта схема не для этого, она предназначена для случаев если не удалось выбрать макет отображения, собственно в эту схему будут выводится модули для которых не существует макета, если не ошибаюсь, то чтоб в нее забраться надо грохнуть темплейты, а не прописывать к ним пути.
    Теоретически надо подправить контроллеры 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. Проверил, работает.
     
    Последнее редактирование: 6 окт 2013
  7. anserega

    anserega Постоялец

    Регистр.:
    15 апр 2009
    Сообщения:
    125
    Симпатии:
    82
    нужно удалить все эти схемы к чертовой бабушке. И оставить одну для всего магазина. Даже мануал где то видел как сделать так.
     
  8. anfriska

    anfriska Постоялец

    Регистр.:
    3 окт 2013
    Сообщения:
    111
    Симпатии:
    31
    Надо поставить модуль All Pages Layout for Opencart (вывод модулей на всех страницах сайта) VQMod

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