Я унаследовал существующую реализацию Sitecore, которая имеет большие папки с содержимым, используя один и тот же шаблон.Некоторые из папок содержат буквально сотни статей.Разные папки должны представлять интерес для разных типов персон.Я не хотел бы переходить от статьи к статье, устанавливая свойства Personas и Profile для каждой отдельной страницы.В идеале я хотел бы ввести свойства только один раз для всей папки статей.Какова лучшая практика в таком случае?
Должен ли я создавать разные шаблоны для каждого типа статьи?Или есть способ унаследовать эти свойства от родительского элемента в дереве содержимого?
Спасибо
РЕДАКТИРОВАТЬ
Я разговаривал в Интернете сДжон Уэст, технический директор Sitecore США.Вот его предложения по решению этой проблемы.Я думал поделиться ими здесь, поскольку некоторые другие люди могут быть заинтересованы в решении аналогичной проблемы.
Я не знаю ни одного существующего решения для наследования этих значений, но, возможно, существуют другие подходы (возможно,аналогично откату языка).
Если количество шаблонов относительно невелико, я бы, вероятно, выбрал шаблонный подход - превратить существующий шаблон в базовый шаблон для шаблонов для всех существующих элементов и вставить обновлениеварианты соответственно.Не мешало бы поместить эти вещи в папки, но они не будут наследовать эти значения таким образом (вы могли бы реализовать то, что унаследовало бы их, как упомянуто выше).Одним из преимуществ здесь является то, что вы можете обновить эти детали в стандартных значениях, которые будут применяться ко всем элементам, основанным на этих шаблонах.
Другой способ - реализовать что-то вроде предустановок макета и безопасности, но для этих другихзначения.
Что бы вы ни делали, убедитесь, что когда пользователь создает новый элемент, он может легко применить эти свойства или применить их автоматически.
Другой способ - написать скрипт.это обновляет существующие элементы, но это не помогает с будущими элементами (если вы не сделаете что-то вроде обработчика сохранения, чтобы автоматически применить те же значения при создании).Может быть, скопировать значения из этой родительской папки.
Мне понравилась идея добавить логическое поле в существующий шаблон, который контролирует, должен ли элемент копировать значения профиля из своего прямого родителя, а затем реализоватьобработчик сохранения, чтобы сделать копию, когда это поле установлено в true.Поэтому я спросил Джона, есть ли документация о том, как создавать такие обработчики.Вот его добрый ответ:
Здесь объясняются некоторые способы, которыми вы можете воспользоваться, чтобы создать / изменить элемент, чтобы установить свои значения:
http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2010/11/Intercepting-Item-Updates-with-Sitecore.aspx
Я предполагаю, что вы можете использовать элемент: сохраненный обработчик событий.Я избегаю обработчиков item: made, потому что, если моя логика работает неправильно, я хочу, чтобы она снова запускалась при следующем событии сохранения.В вашем случае, если эти поля пусты, вы, вероятно, захотите установить значение.
Вы можете использовать фабрику для передачи параметров в ваш обработчик событий, чтобы избежать жесткого кодирования.Например, вы можете передать мастер имени базы данных (отменить обработчик, если сохраненный элемент находится в другой базе данных) и список идентификаторов затронутых шаблонов.Тогда вы сможете более легко добавлять шаблоны в список в будущем.
http://www.sitecore.net/en/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2011/02/The-Sitecore-ASPNET-CMS-Configuration-Factory.aspx
Вот некоторая информация о событиях:
http://sdn.sitecore.net/Articles/API/Using%20Events.aspx
Это включает пример, использующий обработчик сохранения:
http://www.sitecore.net/Community/Technical-Blogs/John-West-Sitecore-Blog/Posts/2010/06/Sitecore-Shared-Source-NewsMover-Categorizes-News-by-Date.aspx