Не раз сталкивался с ситуацией, когда необходимо выбирать определенный шаблон для дочерних документов. Например, если у нас есть страница Новости (с шаблоном all_news) и все ее дочерние документы являются новостями (с шаблоном news_page). В MODx по-умолчанию используется плагин Inherit Page Template, который ставит шаблон родителя при создании документа. В случае, который я описал, данный плагин нам не подходит.
Для решения этой задачи предлагаю воспользоваться плагином Inherit Selected Template. Этот плагин работает следующим образом: вы создаете TV-параметр (типа listbox) для необходимого документа-контейнера и при редактировании его вы выбираете необходимый шаблон для дочерних документов. Все довольно просто и интуитивно понятно.
Установка Inherit Selected Template:
1. Качаете плагин (http://modxcms.com/extras/package/?package=214)
2. Добавляете плагин в back-end. Есть 2 варианта:
- редактируете Inherit Page Template
- создаете новый плагин (но, при этом желательно отключить Inherit Page Template)
код плагина находится в файле plugin.inherit.selected.template.02.php.txt (при вставке необходимо удалить тэги «<?php» и «?>«)
3. Ставим галочку OnDocFormPrerender на вкладке системных событий (если она еще не стоит там)
4. В строку конфигурации плагина вставляем код
1 |
&tvSource=TV Name;string;inheritTpl&levels=parent levels;string;5 |
5. Создаем TV-параметр inheritTpl и отмечаем для него необходимый шаблон(-ы) (тот что у документа-контейнера)
6. В поле Возможные значения вставляем следующий код:
1 |
@EVAL $sql = 'SELECT templatename,id FROM '.$modx->db->config['table_prefix'].'site_templates';$a=array(array('',''),array('Inherit Parent','-1')); $v = $modx->db->query($sql);while($rows = mysql_fetch_row($v)) $a[]=$rows; return $a; |
7. Теперь на нужной странице выбираем шаблон для дочерних и радуемся 🙂
Спонсор поста:
Хотите устроиться на высокооплачиваемую работу? Вам необходимо просто найти и заполнить шаблон резюме, после чего отправить это резюме на все подходящие вакансии на любой онлайн бирже труда.