Помощь Изменение шаблона вывода модуля в зависимости от позиции

Тема в разделе "Opencart", создана пользователем KoNnY, 8 мар 2015.

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

    KoNnY Постоялец

    Регистр.:
    14 дек 2014
    Сообщения:
    68
    Симпатии:
    5
    Добрый день!

    Подскажите, пожалуйста, как добавить проверку на то, в какой позиции выводится модуль? В конкретном случае речь идет о выводе таких модулей как "Хиты продаж", "Новинки", "Акции" и "Рекомендуем". Задача состоит в том, что если вывод происходит в правой или левой колонке, то товары выводятся в виде слайдера (это намного лучше нежели друг под дружкой в 1 столбик), а если вверху страницы или снизу, то обычным списком (не слайдер).
     
  2. vava1

    vava1 Постоялец

    Регистр.:
    21 апр 2013
    Сообщения:
    50
    Симпатии:
    3
    При каких обстоятельствах будут двигаться эти блоки? Дайте больше инфы. Хоть примерную структуру которую придумали, есть ли учет для моб. версии с помощью @media? давайте инфу и помогу.
     
  3. KoNnY

    KoNnY Постоялец

    Регистр.:
    14 дек 2014
    Сообщения:
    68
    Симпатии:
    5
    Тема магазина является адаптивной, поэтому продумывать под моб. версии не нужно, всё уже настроено. Задача состоит исключительно в том, чтобы шаблон вывода модуля менялся в зависимости от его позиции.
    Для наглядности прикладываю макет: http://file.sampo.ru/t6rn38/ В левой колонке модуль реализован как слайдер, а в позиции "верх страницы" - как обычный список (Количество товаров не имеет значение, я в качестве примера привел их 6 шт).
     
    Последнее редактирование: 8 мар 2015
  4. drozd22

    drozd22

    Регистр.:
    17 июн 2011
    Сообщения:
    351
    Симпатии:
    236
    В самой .tpl каждого модуля через такую структуру должно получиться:
    Код:
    <?php if(isset($position)){
       if($position == 'column_left' || $position == 'column_right'){ ?>
    .
    .
    .
       <?php }else{ ?>
    .
    .
    .
       <?php } ?>
    <?php } ?>
     
  5. KoNnY

    KoNnY Постоялец

    Регистр.:
    14 дек 2014
    Сообщения:
    68
    Симпатии:
    5
    К сожалению данной проверки недостаточно, поскольку после добавления вышеуказанного кода блок с товарами вовсе не выводится.
    Я попробовал вывести значение $position и вот какая ошибка: "Notice: Undefined variable: position". Видимо еще и контроллер надо затрагивать...
     
  6. drozd22

    drozd22

    Регистр.:
    17 июн 2011
    Сообщения:
    351
    Симпатии:
    236
    Вы правы, я в спешке не заметил, что в дефолтные контроллеры модулей перед $this->render(); нужно добавить:
    Код:
    $this->data['position'] = $setting['position'];
     
    KoNnY нравится это.