2013-11-21 5 views
2

Есть ли проблема с поиском элемента (страниц) по идентификатору элемента?Sitecore - идентификатор жесткого кодирования

Единственный сценарий, я могу думать, где они могут измениться, если клиент удаляет страницу и повторно добавляет ...

Normaly мы используем TDS или дб копию, чтобы обновить базу данных нашей

ответ

0

I попытается избежать чрезмерной зависимости от использования идентификаторов элементов, если это возможно, хотя, как утверждают другие ответы, это сработает. Если вы сделаете это, разумно рассмотреть возможность установки ограничений безопасности для любых элементов, идентификаторы которых указаны в коде, чтобы пользователи не удалили их (это не мешает пользователям редактировать их).

Другим вариантом может быть использование идентификаторов шаблонов. Очень просто написать несколько методов расширения, которые будут извлекать элементы/потомки с помощью идентификатора шаблона, и это может сделать ваше решение более надежным.

1

Нет проблем с получением идентификатора. Они лучше всего используются для уникальных участников в рамках того, для чего вы их используете. В вашем коде есть проблема чтения, но вы можете создать класс статических идентификаторов, который смягчает это. См. Примеры Sitecore.ItemIDs и Sitecore.TemplateFieldIDs.

4

Нет проблем с доступом по идентификатору. Это предпочтительный метод, поскольку путь может меняться легче, чем идентификатор. Автор с большей вероятностью переименует или перемещает элемент (или предок), чем он должен удалить и воссоздать.

Обычно у нас есть один элемент для каждой установки (или иногда на сайт), содержащий много полей treelist, которые указывают на другие ключевые элементы (например, страницу результатов поиска, другие параметры настроек и т. Д.). Мы сохраняем идентификатор для этого элемента глобальных ссылок int config file, а затем настраиваем для него класс модели с использованием Glass Mapper или Custom Item Generator. Это позволяет нам получить хороший синтаксис следующим образом:

var searchPage = ClientName.Configuration.Settings.GlobalLinks.SearchResultsPage; 
+0

Подход Бена тот же, что мы используем с нашими командами. Кроме того, поскольку вы используете TDS, вы можете использовать шаблон генерации T4 для генерации ваших классов или идентификаторов на основе элементов, контролируемых источником в вашем проекте TDS. –

Смежные вопросы