
Мне никогда не нравилось создавать несколько шаблонов для того, чтобы настроить такое отображение. Хотя, конечно, это логичное решение. Но в MODX выбор шаблона остаётся на откуп контент-менеджера. Поэтому возникает путаница. Кроме того клиенты начинают спрашивать «Я создал новый ресурс, а вместо текста отображается что-то другое». Чтобы такого избежать приходится настраивать, например, автоматический выбор шаблона (при создании статей или проектов в портфолио).
Одним из решений этой проблемы может быть вот такой чанк контентной части шаблона:
{var $default_content = true} <!-- Проверяем ID ресурса --> {switch $_modx->resource.id} {case 1} {include 'content_main'} {var $default_content = false} {case 10} {include 'content_about'} {var $default_content = false} {case 28} {include 'content_portfolio'} {var $default_content = false} {case 30} {include 'content_blog'} {var $default_content = false} {/switch} <!-- Проверяем родителя ресурса --> {switch $_modx->resource.parent} {case 30} {include 'content_blog_item'} {var $default_content = false} {/switch} <!-- Если ни одно из условий не сработало, выводим обычную текстовую страницу --> {if $default_content} {include 'content_default'} {/if}
Здесь используется синтаксис Fenom, так что у вас должен быть установлен pdoTools, и включена соответствующая настройка.
В этом чанке мы сами определяем, какой раздел и каким образом показывать. Клиент или контент-менеджер ничего не сломают — ведь если ни одно условие не выполняется (когда, например, создаётся новый раздел), будет выведен стандартный чанк, например, текстовой страницы.
Таким образом шаблонов у нас, всё-таки, несколько. Только шаблонами тут являются чанки, отвечающие за контент определённых страниц, а объект «Шаблон» у нас один для всех страниц.
Как раз думал на switch поменять, т.к. такое представление удобнее, но оставил т.к. есть запуски сниппетов и т.п., с If читается лучше. В моём случае + имхо, конечно.
Теперь снова задумался )
Спасибо!
И если есть чанк у данной страницы типа content.5, то он автоматом подставляется.
Из проекта в проект схема незначительно меняется в зависимости от особенностей проекта, но суть остаётся прежней — минимум шаблонов и стандартизированные чанки контента.
то читабельность ужасная
По сути если хорошо всё организовать, то ею тоже можно пользоваться:
1. Чётко структурировать по папкам эти чанки
2. В описании чанка вписывать название страницы, чтобы при наведении на чанк оно показывалось.
3. На фронте написать маленький сниппет, который проверяет, есть ли у текущей страницы чанк с таким именем и выводить кнопку редактирования именно этого чанка.
Уже давно пользуюсь таким образом на нескольких больших сайтов, где другая конструкция увела бы в никуда, и пока всё работает… =)
А можно например, если имеется 3 уровня меню, сделать такую конструкцию?
Как можно получить про дедушку ресурса на котором находишься?
3 уровня меню в одном шаблоне.