Inherit Parent Template

19 January 2009

В MODx есть маленький такой плагинчик, Inherit Parent Template называется. Он состоит из десятка строк и призван помогать документам наследовать шаблон родителя, т. к. сам MODx предлагает настроить только шаблон по умолчанию для всей системы.

К сожалению, бывает такое, что документ не должен наследовать шаблон родителя. Как тогда быть?

Вариантов решения проблемы я знаю три. Первый: забить на всё, пусть пользователь переключает шаблон каждый раз руками. Понятно, что он будет забывать, ошибаться, и это неправильно. Второй: хранить дочерние документы в другом разделе который будет иметь нужный шаблон. Тогда возникает ряд неудобств, но зато всё само. И третий вариант: чуть-чуть обработать напильником упомянутый выше плагин.

Открываем плагин и вписываем после конструкции присваивания нужного шаблона (там сложно ошибиться):

if ($parent[’template’] == 4) // news template
$content[’template’] = 3;

Нужные номера шаблонов можно посмотреть в соответствующем разделе, они там высвечиваются. Сохраняем изменения. Теперь если родитель имеет шаблон #4, то дочерний документ будет иметь по умолчанию шаблон #3.

 

И тут можно было закончить, но есть еще одна фишка. Ровно таким же способом можно задавать другие исключительные значения параметров документа по умолчанию. Например, по всему сайту стоит «умолчательное кеширование», однако в каком-то разделе вам кеширование не нужно. Дописываем туда же:

if ($parent[’template’] == 7) // gallery template
$content[’cacheable’] = 0;

Аналогично можно оттолкнуться и от параметров «этого» документа вместо родителя, используя массив $content:

if ($content[’isfolder’] == 1) //
$content[’searchable’] = 0;

Думаю, идея понятна. Всё само и никаких неудобств!