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

KoNnY

Постоялец
Регистрация
14 Дек 2014
Сообщения
64
Реакции
7
Добрый день!

Подскажите, пожалуйста, как добавить проверку на то, в какой позиции выводится модуль? В конкретном случае речь идет о выводе таких модулей как "Хиты продаж", "Новинки", "Акции" и "Рекомендуем". Задача состоит в том, что если вывод происходит в правой или левой колонке, то товары выводятся в виде слайдера (это намного лучше нежели друг под дружкой в 1 столбик), а если вверху страницы или снизу, то обычным списком (не слайдер).
 
При каких обстоятельствах будут двигаться эти блоки? Дайте больше инфы. Хоть примерную структуру которую придумали, есть ли учет для моб. версии с помощью @media? давайте инфу и помогу.
 
Тема магазина является адаптивной, поэтому продумывать под моб. версии не нужно, всё уже настроено. Задача состоит исключительно в том, чтобы шаблон вывода модуля менялся в зависимости от его позиции.
Для наглядности прикладываю макет: Для просмотра ссылки Войди или Зарегистрируйся В левой колонке модуль реализован как слайдер, а в позиции "верх страницы" - как обычный список (Количество товаров не имеет значение, я в качестве примера привел их 6 шт).
 
Последнее редактирование:
В самой .tpl каждого модуля через такую структуру должно получиться:
Код:
<?php if(isset($position)){
   if($position == 'column_left' || $position == 'column_right'){ ?>
.
.
.
   <?php }else{ ?>
.
.
.
   <?php } ?>
<?php } ?>
 
В самой .tpl каждого модуля через такую структуру должно получиться:
Код:
<?php if(isset($position)){
   if($position == 'column_left' || $position == 'column_right'){ ?>
.
.
.
   <?php }else{ ?>
.
.
.
   <?php } ?>
<?php } ?>
К сожалению данной проверки недостаточно, поскольку после добавления вышеуказанного кода блок с товарами вовсе не выводится.
Я попробовал вывести значение $position и вот какая ошибка: "Notice: Undefined variable: position". Видимо еще и контроллер надо затрагивать...
 
Я попробовал вывести значение $position и вот какая ошибка: "Notice: Undefined variable: position". Видимо еще и контроллер надо затрагивать...
Вы правы, я в спешке не заметил, что в дефолтные контроллеры модулей перед $this->render(); нужно добавить:
Код:
$this->data['position'] = $setting['position'];
 
Назад
Сверху