Всем привет. Подскажите, пожалуйста, как вывести модуль (например мы вк) на отдельной странице (статье). Пробовал создавать схему отдельную вида information/information&information_id=8 - модуль не выводится. Пробовал скопировать information.tpl и создать information2.tpl и аналогично с information.php (для создания макета information/information2), но в php файле еще менял значения information/information на information/information2 Но почему то при переходе на страницу index.php?route=information/information2&information_id=8 выдает пустую страницу Есть еще идеи?
Схемы дублировать нельзя. Если нужно вывести модуль только для конкретной статьи, назначте его для схемы статей, а в самом модуле проверяйте id статьи: PHP: if (!isset($this->request->get['information_id']) || $this->request->get['information_id'] != 111){return false;} Этот код нужно разместить после декларации функции index в контроллере модуля. Если при проверки окажется, что это не страница конкретной статьи или что id статьи не соответствует указанному (нужно заменить 111 на id статьи, где нужно вывести модуль) - модуль выводиться не будет.
У меня вопрос... Почему нельзя просто создать новую схему с адресом information.tpl.. То есть просто название схемы другое. У меня так работало.
Потому что оно не будет работать! При поиске соответствия схем и контроллеров после первого совпадения поиск прекращается, то есть если для одного контроллера назначить несколько схем, то работать будет только одна из них.
Ну я тут не согласен. Потому что контроллер ищет схему по ид. А как я знаю Ид схемы всех уникальное. А сам фаил просто указевает на растановку в схеме. Так как расстановку в обох схемах одинаковая только другие модули все будет работать...
Вот запрос, которым выбирается из БД схема для контроллера: PHP: "SELECT * FROM " . DB_PREFIX . "layout_route WHERE '" . $this->db->escape($route) . "' LIKE CONCAT(route, '%') AND store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY route DESC LIMIT 1" Не видите в нём ничего, что противоречит вашим словам? И ещё: будете так неграмотно писать, буду начислять штрафные баллы!
обнаружил косяк данного метода - если это прописать в модуле, то он перестает выводиться также на ВСЕХ неинформационных страницах (каталог, продукт и т.п.). Что можно с этим сделать?
Доплнить услловие. Вам нужно было выводить модуль исключительно на одной странице и мой код решает эту задачу. Если нужно выводить на одних страницах и не вводить на других, напишите подробно, на каких страницах нужно выводить.
категории, корзина, продукт, производители, контакты, акции. По сути - практически все остальные страницы. Суть такова, что в статье с ИД=9 модуль выводится в шапке, а в других статьях и страницах - в левой колонке.
PHP: if ((!isset($this->request->get['information_id']) || $this->request->get['information_id'] != 9) && $setting['position'] == 'content_top'){return false;} elseif((isset($this->request->get['information_id']) || $this->request->get['information_id'] == 9) && $setting['position'] == 'column_left'){return false;} И ставите модуль на всех схемах в левую колонку, а для информационных страниц ещё и в шапку. И убедитесь, что в функцию index передан массив $setting. Кстати, если шапка - это не стандартная модульная позиция (content_top), то нужно узнать, как она называется и вписать вместо content_top.
Доброго времени суток. Облазив не мало форумов, только Ваш мне попался по моей проблеме. В общем надо что бы модуль был только в одной статье и во всех товарах Или просто Вы бы не могли объяснить работу условия, что бы я понял и при изменениях позиций сам мог поменять.
Genexys, нет у Вас вообще никакой проблемы. Создали новую схему, не привязывая ее к контроллеру, там прописали нужный модуль в нужной позиции, привязали к Вашей статье в "дизайне" созданную схему - и все дела: модуль вылез в нужном месте только этой статьи, дела 2 минуты максимум, код пилить не надо.
noir, правильно сказал. Дизайн-макеты и создаем схему. В статье вкладка дизайн и выбираем созданную схему. На эту схему цепляем нужный модуль.