У меня есть сайт Umbraco
... с различными типами документов, например ::100100
- страница
- публикации
- событие
- Новости
... и различные шаблоны, например ::
- дом
- содержание
- содержание с перечислением
- контент со встроенным носителем (например, видео на YouTube)
В шаблоне у меня есть несколько дополнительных макросов / виджетов. Например, иногда на странице с шаблоном «content» отображается виджет «search site», а иногда - нет. Будет ли конкретный виджет отображаться на определенной странице, будет контролировать администратор CMS (который не является разработчиком).
Добавление шаблона для каждой комбинации виджетов не вариант: если шаблон «контента» имеет дополнительные виджеты W1, W2, W3, то мне в конечном итоге понадобится создать шаблон для каждого члена powerset тех виджеты - т.е. мне придется умножить количество шаблонов, которые у меня есть, на 8 (2 ^ n) только для 3 дополнительных виджетов (для реального сайта будет более 3 дополнительных виджетов).
Так что я хотел бы включать и выключать отображение виджетов, основываясь на параметре, заданном пользователем в бэкэнде Umbraco. Фактическое включение и выключение очень простое - я просто добавлю оператор "if (widgetX_is_turned_on)" в свой пользовательский элемент управления.
Но, насколько я могу судить, я могу добавлять свойства только к типам документов, а не к шаблонам. Я бы предпочел не добавлять свойство для переключения каждого виджета в мой корневой тип документа, потому что многие из этих переключателей / свойств в конечном итоге ничего не сделают, если шаблон, связанный с документом, не разрешает определенный виджет. Например, если я создаю «страницу» документа с именем «Пример страницы» с типом документа «содержимое», то переключение / свойство «Отображать виджет сайта поиска» ничего не будет делать, если шаблон «содержимое» фактически не разрешает отображение виджета "поиск по сайту".
Существует ли аккуратный и аккуратный способ параметризации шаблона, чтобы я мог включать и выключать макросы / виджеты для отдельных документов?