2016-03-01 64 views
6

我正在進行Sitecore 8.1安裝。我試圖使用droptree字段來允許內容編輯器從項目樹中選擇一個項目(數據模板A)。每個有效選擇項都保證有一個或多個不同數據模板的子項(數據模板B)。根據文檔,這應該是很容易做到:只需設置源到任何一個參數的數據源:Sitecore Droptree不會排除項目

Datasource=/sitecore/Media Library/Images/Folder&IncludeTemplatesForDisplay=Data Template A 

或查詢:

query:/sitecore/Media Library/Images/Folder/*[@@templatename='Data Template A'] 

出於某種原因,不過,本場似乎忽略路徑以外的任何東西。它將顯示樹的正確部分,但顯示所有項目(包括數據模板B的項目)並允許選擇它們。我試過[Exclude|Include]TemplatesFor[Selection|Display]的各種排列,其中沒有一個證明有效。我也嘗試使用[@@templatename!='Data Template B']或兩種方法與templateid排除查詢B.

我一直沒能找到很多關於此的信息,除了偶爾模糊的引用droptree不尊重排除。常見的解決方案似乎是使用帶有正則表達式驗證的TreeList將其限制爲一個選擇。這種方法是適當的,但並不是真正的我喜歡的:TreeList UI對於單個選擇有點奇怪,我寧願只是不允許用戶選擇多個項目,而不是在他們拋出驗證錯誤時做。

我還可以使用其他幾個字段來排除排除事項但不顯示樹視圖:再次,可用但不是想法,因爲這裏可能有很多項目,並且樹視圖爲用戶提供了有一些有用的上下文。

我或許可以編寫一個模仿Droptree的新字段類型,但實際上尊重排除 - 而且我很固執,這可能是我採用的路線 - 但我想首先檢查以確保我沒有不要錯過什麼。所以這就是問題所在:任何人都知道在繼續前寫下我自己的方法之前,讓Droptree能夠對ExcludeTemplatesForSelection/Display或者通過查詢進行過濾來實現的方式嗎?

回答

6

Sitecore DropTree該字段不支持IncludeTemplatesForSelectionIncludeTemplatesForDisplay參數。

他們只與Treelist,TreelistExMulitlist字段一起工作。

您可以使用的是由Richard Cabral創建的FilteredTree字段類型。

你可以在這裏找到git:Filtered Tree by Richard Cabral at github

+0

正在努力實現這一點,但是對於任何後續任何人都可以使用幾個快速註釋: 1.它還需要:https://github.com/sitecorerick/spark-sitecore-client/blob/master/Fields /FilterableDataTreeView.cs 2.我在使用語句中添加了'使用TreeNode = Sitecore.Web.UI.HtmlControls.TreeNode'。 –

+0

現在可以確認這個工作。唯一的問題是你無法通過Sitecore Rocks訪問樹視圖,但這對我來說只是一個煩惱,而不是內容編輯。 –