как к модулю подвязать шаблон вывода контента

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
User avatar
m00nk
Forum Members
Forum Members
Posts: 57
Joined: Wed Sep 09, 2009 10:48 pm

Re: как к модулю подвязать шаблон вывода контента

Post by m00nk »

Тут все решается через задницу :(

1) просто шаблон привязать не получится. Придется делать фэйковую (пустую, невидимую в меню страницу) с нужным шаблоном, а потом использовать ее в качестве целевой для контента вашего модуля.

2) просто указать целевую страницу не выйдет - придется мудрить с роутами.

В двух словах алгоритм такой:

1) создаем страницу, использующую нужный шаблон. Делаем ее невидимой в меню (чтоб не светилась на сайте), отключаем поиск и кэширование (контент ведь будет постоянно меняться).

2) Идентификатор (ID) этой страницы скармливаем своему модулю (как - решайте сами).

3) В конструкторе класса вашего модуля городим примерно такой "огород" (пишу на коленке, так что за 100% работоспособность не ручаюсь):

Code: Select all

$this->RegisterRoute('/module_name\/(?P<your_value>[0-9]+)$/', array('action'=>'show_item', 'returnid' => $page_id));
где:
- module_name - имя вашего модуля (хотя может быть любой текст)
- your_value - имя переменной, в которой вы получите переданные на страницу данные (например идентификатор записи, которую нужно отобразить).
- show_item - имя экшенса, который будет вызван (обработчик)
- $page_id - переменная, содержащая id фэйковой страницы для вывода результатов.

В результате всей этой галиматьи получится такая штуковина:

при обращении к странице вида

Code: Select all

http://ваш_сайт.ru/module_name/1234/
вудет вызван экшенс action.show_item.php (если экшены у вас в отдельных файлах), которому в переменной $params['your_value'] будет передано значение 1234 и результат работы которого будет выведен на вашей фэйковой странице, т.е. с использованием нужного вам шаблона.

Все, что теперь вам остается - создать в вашем списке кучу ссылок вида http://ваш_сайт.ru/module_name/1234/, заменяя 1234 на реальные идентификаторы записей.

Да, чуть не забыл: описанный выше способ заточен под использование ЧПУ.

----
Возможно я изобретаю велосипед и существует способ проще, но я его не нашел. :(
I hate CMSMS. :(
Post Reply

Return to “Russian - русский”