2013-04-25 5 views
2

У меня есть следующий содержание структуры в Sitecore:Как фильтровать элементы, отображаемые в путеводителе Sitecore?

  • Главная
    • Продукты
      • AE
        • Образец изделия A
        • B Образец продукта B
      • FJ
      • К-О
        • л Образец л продукта
      • Р-Т
      • U-Z

Кроме того, каждый продукт имеет поле флажок под названием "Активный". Я хотел бы иметь Treelist, который позволяет пользователю выбирать один или несколько продуктов, но им разрешено выбирать только те продукты, где установлен флажок Active. Это возможно?

ответ

1

Похоже, вы можете достичь того, что вам нужно, используя запрос Sitecore. Обратитесь к documentation за точные правила синтаксиса.

Не все типы полей поддерживают запрос Sitecore, поэтому вам нужно будет использовать тип поля, который делает (Multilist). Или вы можете реализовать custom TreeList field type that works with query.

+0

Я посмотрел ссылку, которую вы включили для пользовательского TreeList, который поддерживает Sitecore Query. От взгляда на код в ссылке то, что это делает, поддерживает использование Sitecore Query, чтобы установить источник в отдельный узел контента. Это не совсем то, что я хочу сделать. Я хочу установить источник для TreeList для всех дочерних узлов определенного узла и исключить определенные элементы контента из списка. Я не думаю, что я точно понимаю, как это сделать. –

+0

Я не реализовал это, но из того, что я читаю, как только вы создали настраиваемый тип поля, вы должны использовать любой запрос в качестве источника данных. Ваш запрос будет определять, какие элементы отображаются в вашем списке (например, запрос:/[path_to_your_source_item] // * [@ your_field_name = 'somevalue'] –

1

Вы также можете использовать свойства IncludeTemplatesForDisplay или IncludeTemplatesForSelection, чтобы ваши поля TreeList были чистыми.

IncludeTemplatesForDisplay делает только те шаблоны, которые будут отображаться в TreeList.
IncludeTemplatesForSelection позволяет определить, какие шаблоны вы можете выбрать в поле TreeList.

В вашем случае вы можете установить IncludeTemplatesForDisplay шаблон вашего товара, а также элементы A-E и т. Д., А также фактический шаблон продуктов. Если вы затем выберете IncludeTemplatesForSelection, вы можете убедиться, что редакторы контента могут по-прежнему выбирать только фактический товар.

Другие параметры ExcludeTemplatesForSelection, DatabaseName, ExcludeTemplatesForDisplay, IncludeItemsForDisplay, ExcludeItemsForDisplay и AllowMultipleSelection.

Имейте в виду, что не будет выбора, где установлен флажок, но вы можете подумать о создании настраиваемого поля на основе поля TreeList, которое имеет дополнительное свойство, которое проверяет, установлено ли поле Active.

0

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

Как насчет того, чтобы думать об этом по-другому.

Что делать, если у вас есть зеркало раздела продуктов в дереве где-то еще в вашем дереве, но вместо того, чтобы иметь все продукты в этом зеркальном разделе, у вас будут только активные продукты. Элементы в этом зеркальном разделе будут иметь поле перетаскивания, которое отображает исходный продукт в исходном разделе дерева. Чтобы сохранить этот список в актуальном состоянии, вы можете использовать настраиваемое действие при сохранении исходного продукта. Когда продукт сохранен, если установлен флажок Активный, создайте в разделе Зеркальные продукты дерева элемент типа Зеркальный продукт (см. Раздел «Зеркальные продукты») и установите ссылку на исходный продукт. Когда продукт будет сохранен, если флажок Активный не установлен, найдите Зеркальный продукт, который отображает его сохранение и удаление.

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

Следует иметь в виду: когда вы удаляете Зеркальный продукт, если на него ссылается treelist, эта ссылка останется; вам нужно будет проверить код на null, прежде чем пытаться использовать элемент treelist.

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