2016-03-01 14 views
6

Sto lavorando ad un'installazione di Sitecore 8.1. Sto cercando di utilizzare un campo droptree per consentire agli editor di contenuti di selezionare un elemento (modello di dati A) da un albero di elementi. Ogni articolo che è una selezione valida è garantito per avere uno o più elementi figlio di un modello di dati diverso (modello dati B). In base alla documentazione, questo dovrebbe essere facile da fare: basta impostare la sorgente a uno un DataSource con parametri:Sitecore Droptree non esclude gli articoli

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

o una query:

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

Per qualche ragione, però, il campo sembra ignorare tutto tranne il percorso. Visualizzerà la porzione corretta dell'albero, ma mostra tutti gli elementi (compresi quelli del modello di dati B) e consente di selezionarli. Ho provato varie permutazioni di [Exclude|Include]TemplatesFor[Selection|Display], nessuna delle quali si è dimostrata efficace. Ho anche provato a escludere B dalla query utilizzando [@@templatename!='Data Template B'] o entrambi gli approcci con templateid.

Non sono stato in grado di trovare molte informazioni a riguardo, a parte il riferimento occasionale e vago di droptree che non rispettava le esclusioni. La soluzione comune sembra utilizzare una TreeList con una convalida regex per limitarla a una selezione. Questo approccio è adeguato, ma non proprio quello che preferirei: l'interfaccia utente TreeList è un po 'strana per la selezione singola e preferirei non consentire a un utente di selezionare più elementi anziché lanciare un errore di convalida quando essi fare.

Ci sono alcuni altri campi che potrei usare che rispettano le esclusioni ma non presentano una vista ad albero: di nuovo, utile ma non idea, in quanto potrebbero esserci potenzialmente molti articoli qui e la vista ad albero fornisce all'utente con qualche contesto utile.

Probabilmente potrei scrivere un nuovo tipo di campo che imita il Droptree ma in realtà onora l'esclusione - e sono testardo abbastanza che questa potrebbe essere la strada che prendo - ma volevo controllare prima per assicurarsi che non fossi Mi manca solo qualcosa. Ecco, questa è la domanda: qualcuno conosce un modo per rendere onore a Droptree o ExcludeTemplatesForSelection/Display o filtrare per query prima di andare avanti e scrivere il mio?

risposta

6

Il campo Sitecore DropTree non supporta i parametri IncludeTemplatesForSelection o IncludeTemplatesForDisplay.

Funzionano solo con campi Treelist, e Mulitlist.

Quello che è possibile utilizzare è il tipo di campo FilteredTree creato da Richard Cabral.

Puoi trovarlo da git qui: Filtered Tree by Richard Cabral at github.

+0

Lavorare su attuazione del presente, ma un paio di appunti veloci per chi segue dopo: 1. richiede anche questo: https://github.com/sitecorerick/spark-sitecore-client/blob/master/Fields /FilterableDataTreeView.cs 2. Ho aggiunto il 'using TreeNode = Sitecore.Web.UI.HtmlControls.TreeNode' alle istruzioni using. –

+0

Ora posso confermare che questo funziona. L'unico piccolo problema è che non è possibile accedere alla vista ad albero tramite Sitecore Rocks, ma questo è solo un fastidio per me, non per i redattori di contenuti. –

Problemi correlati