2013-04-25 68 views
2

我在Sitecore的內容如下結構:如何篩選在Sitecore Treelist中顯示的項目?

  • 首頁
    • 產品
      • AE
        • 一個樣品一
        • B樣品B產品
      • FJ
      • K-ø
        • L取樣的積L
      • 對叔
      • ù-Z

此外,每個產品有一個稱爲 「活動」 複選框字段。我希望有一個允許用戶選擇一個或多個產品的Treelist,但他們應該只能選擇激活複選框被選中的產品。這可能嗎?

回答

1

這聽起來像你可以使用Sitecore查詢來實現你所需要的。查看documentation瞭解準確的語法規則。

不是所有的字段類型都支持Sitecore查詢,所以您需要使用一個字段類型(Multilist)。或者你可以實現一個custom TreeList field type that works with query

+0

我查看了您爲支持Sitecore Query的自定義TreeList包含的鏈接。通過查看鏈接中的代碼,支持使用Sitecore Query將源設置爲特定的單個內容節點。這不完全是我想要做的。我想要做的是將TreeList的源設置爲特定節點的所有子節點,並從列表中排除某些內容項。我不認爲我明白如何做到這一點。 – 2013-04-29 15:21:31

+0

我還沒有實現這一點,但從我正在閱讀的內容中,一旦創建了自定義字段類型,就應該能夠使用任何查詢作爲數據源。您的查詢將決定列表中出現的項目(例如,查詢:/ [path_to_your_source_item] // * [@ your_field_name ='somevalue']] – 2013-05-01 18:16:44

1

您還可以使用屬性IncludeTemplatesForDisplayIncludeTemplatesForSelection來保持TreeList字段乾淨。

IncludeTemplatesForDisplay確保只有那些模板纔會出現在TreeList中。
IncludeTemplatesForSelection允許您定義您可以在TreeList字段中實際選擇的模板。

對於您的情況,您可以設置IncludeTemplatesForDisplay您的產品項目的模板,然後是A-E等項目,以及實際的產品模板。如果您選擇IncludeTemplatesForSelection,則可以確保內容編輯者仍然只能選擇實際的產品項目。

其他參數ExcludeTemplatesForSelectionDatabaseNameExcludeTemplatesForDisplayIncludeItemsForDisplayExcludeItemsForDisplayAllowMultipleSelection

請記住不允許在那裏一個複選框被選中的選擇,但你可以考慮創建基於TreeList場,其中有哪些檢查Active場是否設置附加屬性的自定義字段。

0

我不確定是否有開箱即用的方式將一個treelist(或任何基於列表的字段)的數據源設置爲一組Items並按其字段的值進行過濾。

如何以不同的方式思考它。

如果您在樹的其他位置有樹的產品部分的鏡像,但是該鏡像部分中沒有包含所有產品,則只有產品處於活動狀態。此鏡像部分中的項目將具有映射到樹的原始部分中的原始產品的下拉鍊接字段。要使此列表保持最新,您可以在保存原始產品時使用自定義操作。保存產品後,如果選中「活動」複選框,請在樹的「鏡像產品」部分中創建類型爲的鏡像產品,並將下拉鍊接設置爲原始產品。保存產品後,如果未選中「活動」複選框,請找到映射到要保存的該產品的鏡像產品並將其刪除。

最後,您的樹列的數據源將是樹的這些Mirror Products部分的根,而不是原始產品本身。這樣,您的treelist的選項總是隻會映射到已選中「活動」複選框的產品。

需要記住的一件事:當您刪除鏡像產品時,如果它被一個treelist引用,則該引用將保留;在嘗試使用treelist項目之前,您需要先檢查您的代碼是否爲null。

相關問題