2016-03-01 6 views
6

Ich arbeite an einer Sitecore 8.1-Installation. Ich versuche ein Drop-Tree-Feld zu verwenden, damit Inhalts-Editoren ein Element (Datenvorlage A) aus einer Baumstruktur auswählen können. Jedes Element, das eine gültige Auswahl hat, hat garantiert ein oder mehrere untergeordnete Elemente einer anderen Datenvorlage (Datenvorlage B). Gemäß der Dokumentation, dies sollte einfach zu tun: Stellen Sie nur die Quelle entweder eine parametrisierte Datenquelle:Sitecore Droptree schließt keine Objekte aus

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

oder eine Abfrage:

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

Aus irgendeinem Grunde aber, scheint das Feld ignoriere alles außer dem Pfad. Es wird der korrekte Teil des Baums angezeigt, aber alle Elemente (einschließlich der Datenvorlage B) werden angezeigt und können ausgewählt werden. Ich habe verschiedene Permutationen von [Exclude|Include]TemplatesFor[Selection|Display] ausprobiert, von denen keine sich als effektiv erwiesen hat. Ich habe auch versucht, B aus der Abfrage mit [@@templatename!='Data Template B'] oder beide Ansätze mit templateid auszuschließen.

Ich konnte nicht viele Informationen darüber finden, abgesehen von den gelegentlichen vagen Hinweis auf droptree nicht Ausschlüsse zu ehren. Die übliche Lösung scheint eine TreeList mit einer Regex-Validierung zu verwenden, um sie auf eine Auswahl zu beschränken. Dieser Ansatz ist angemessen, aber nicht wirklich, was ich bevorzuge: Die TreeList-Benutzeroberfläche ist ein bisschen komisch für die einfache Auswahl, und ich würde es lieber nicht zulassen, dass ein Benutzer überhaupt mehrere Elemente auswählt, anstatt einen Validierungsfehler auszulösen machen.

Es gibt ein paar andere Felder, die ich verwenden könnte, die die Ausschlüsse beachten, aber keine Baumansicht präsentieren: wieder brauchbar, aber keine Idee, da es möglicherweise viele Elemente hier geben könnte und die Baumansicht bietet den Benutzer mit etwas hilfreichem Kontext.

Ich könnte wahrscheinlich einen neuen Feldtyp schreiben, der den Droptree nachahmt, aber tatsächlich den Ausschluss honoriert - und ich bin stur genug, dass dies der Weg sein könnte, den ich nehme -, aber ich wollte zuerst überprüfen, ob ich was war verpasse gerade etwas. Das ist also die Frage: Jeder weiß, wie Dropstree entweder ExcludeTemplatesForSelection/Display oder Filterung nach Abfrage vornehmen können, bevor ich meine eigene schreibe?

Antwort

6

Sitecore DropTree Feld unterstützt keine IncludeTemplatesForSelection oder IncludeTemplatesForDisplay Parameter.

Sie arbeiten nur mit den Feldern Treelist, TreelistEx und Mulitlist.

Was Sie verwenden können, ist FilteredTree Feldtyp von Richard Cabral erstellt.

Sie können es von git hier finden: Filtered Tree by Richard Cabral at github.

+0

Arbeiten an der Umsetzung dieser, aber ein paar schnelle Hinweise für alle, die nach folgt: 1. Es erfordert auch dies: https://github.com/sitecorerick/spark-sitecore-client/blob/master/Fields /FilterableDataTreeView.cs 2. Ich fügte den using-Anweisungen den 'using TreeNode = Sitecore.Web.UI.HtmlControls.TreeNode' hinzu. –

+0

Kann jetzt bestätigen, dass dies funktioniert. Das einzige Problem ist, dass Sie nicht über Sitecore Rocks auf die Baumansicht zugreifen können, aber das ist nur ein Ärgernis für mich, nicht für die Redakteure. –