Как использовать event в шаблоне для вывода модуля на нужных страницах.

 
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 2592
Первая ветка, суть проблемы, модуль со списком категорий, в моём случае видеролики.
Назначен показ на пункт меню "Видео". Отмечено "Не показывать на вложенных страницах.
На главной странице видео модуль есть - ok. На странице просмотра одного видеоролика модуля нет - ok. На странице списка ролика, при пагинации на вторую страницу списка модуля тоже нет - NOT OK. Эта страница считается вложенной относительно главной страницы видео, но она по сути та же главная страница видео, просто ее продолжение, здесь список разделов нужен.

Кроме того есть модуль, который стоило бы вывести только на страницах просмотра отдельного видеоролика. И не стоило бы выводить на страницах списков роликов.

Можно вставлять модульные позиции в шаблон tpl. Этот вариант годится для модуля который нужно вывести на странице видео и не нужно выводить на главной странице или в категориях. Но он не годится для модуля со списком категорий. Модуль списка категорий выводится в сайдбаре, и если пытаться запихнуть его в tpl категории, сложно имитировать тот же дизайн что и сайдбар.

Пришло в голову опираться на events http://instantcms.ru/blogs/haki-patchi-moduli-plaginy-i-prochie-dorabotki-dvizhka/spisok-vseh-event-ov-sistemy.html
Например задать в основном шаблоне условие:
GET_BOARD_RECORDS - здесь выводить модуль со списком категорий
GET_BOARD_RECORD - здесь не выводить модуль списка категорий но вывести модульную позицию которую нужно на странице одного ролика или в данном случае одного объявления.

Не подскажете, как это устроить в template.php?
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Нил™, О каком модуле речь, о "Разделы статей"? Может проще написать условие в template.php в диве с сайдбаром. Что то типа , если menu_id такое то, то модуль такой то. Сейчас не помню название переменных, но они есть.
Реклама
cms
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 2592
Lora:
Может проще написать условие в template.php в диве с сайдбаром. Что то типа , если menu_id такое то, то модуль такой то.
Не поможет.

Есть сайдбар.
Есть модуль "Категории видео" (или любой другой)
Как использовать event в шаблоне для вывода модуля на нужных страницах.


И есть модуль скажем новое видео.
Как использовать event в шаблоне для вывода модуля на нужных страницах.

Есть пункт меню "Видео". (или любой другой компонент, раздел)


Нужно что модуль с категориями выводился в сайдбаре на всех страницах раздела где списки материалов
Как использовать event в шаблоне для вывода модуля на нужных страницах.


и не выводился на странице просмотра самого одного отдельно взятого материала.

Как использовать event в шаблоне для вывода модуля на нужных страницах.


И нужно что бы модуль "новое видео" выводился на той же позиции в сайдбаре на странице просмотра ролика, и не выводился на страницах списков роликов.


Если цеплять модуль на пункт меню "Видео" то он и будет показываться на всех страницах видео.
Если ставить отметку "Не показывать на вложенных страницах" он вложенными будет считать и вторую страницу списка роликов при просмотре категории.

Поэтому может быть как то через event Если есть событие "Просмотр списка роликов" - модуль со списком категорий. Конец. Если есть событие просмотр одного видеоролика - модульная позиция для модуля Новое видео. Конец.

Я не знаю работает ли такое в шаблоне или нет и если да то как вызвать для создания условия. Вообще если опираться на это, настройки показа модуля можно было бы сделать более гибкими.
Редактировалось: 1 раз (Последний: 14 октября 2016 в 11:55)
Посетитель
small user social cms
МедальАвторитет форумаПочетный донор проекта
Сообщений: 1356
Нил™, кто Вам мешает сделать принудительный вывод? к любой уникальной переменной привяжитесь и все. Ставим показывать на всех страницах, далее в условии модуля проверять. нужная ли страница. Посмотрите условия которые уникальны для тех страниц где надо.
Фриланс по Intantcms 1 и 2 версий.Писать в ЛС. Отзывы заказчиков
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
Нил™:
Не подскажете, как это устроить в template.php?
callEvent('...') производит событие. Если хочешь привязать вывод модуля к событию, то наверное нужно для начала написать плагин? Затем в index.php это событие объявить и затем всё должно работать. По идеи. smile
Посетитель
small user social cms
МедальАвторитет форума
Сообщений: 1545
kirkr:
Нил™, кто Вам мешает сделать принудительный вывод?
Возможно с пагинацией не сработает.
Посетитель
small user social cms
МедальАвторитет форумаКубок зрительских симпатий
Сообщений: 2592
В общем пока с вашей помощью пришел к такому
в template.php

Код PHP:
  1. <?php
  2. $thispageurl=$_SERVER['REQUEST_URI'];
  3. if (preg_match("/.html/i", "$thispageurl")) {
  4. $this->printModules('sidebar2');
  5. } else {
  6. $this->printModules('sidebar3');
  7. }
  8. ?>
sidebar2 - модульная позиция на которую можно публиковать те модули, которые нужно выводить только на страницах просмотра одного материала, контента.
sidebar3 - модульная позиция на которую можно публиковать те модули, которые нужно выводить только на всех страницах (с пагинацией) определенного раздела (списка материалов), но не нужно выводить на странице просмотра одного материала.

Несколько извращенно, но это самое простое. Как правило страницы категорий не имеют расширения html а страница просмотра материала имеет. От этого и будем пока отталкиваться.
Использовать дополнительные плагины для вывода модуля тоже из камасутры в принципе.

Спасибо за участие!
Редактировалось: 2 раз (Последний: 14 октября 2016 в 14:48)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.