2012-12-19 20 views
8

Sto scrivendo un'estensione della GUI e utilizzo del framework Anquilla per ottenere un elenco di Keywords all'interno di un Category. Sto ottenendo un documento XML per l'elenco di parole chiave che funzionano con quel documento all'interno della mia estensione.SDL Tridion GetListKeywords using Anquilla Framework

Il mio problema è che il codice XML restituito non contiene il valore "Description" della parola chiave. Ho il titolo e la chiave ecc

mio codice originale è simile al seguente:

var category = $models.getItem("CATEGORYTCMID:); 
var list = category.getListKeywords(); 
list.getXml(); 

Un nodo tipico restituito è questo:

<tcm:Item ID="tcm:4-1749-1024" 
Type="1024" Title="rate_one" Lock="0" IsRoot="true" 
Modified="2012-12-17T23:01:59" FromPub="010 Schema" 
Key="rate_one_value" IsAbstract="false" 
CategoryTitle="TagSelector" 
CategoryID="tcm:4-469-512" Icon="T1024L0P0" 
Allow="268560384" Deny="96" IsNew="false" 
Managed="1024"/></tcm:ListKeywords> 

Così ho provato ad utilizzare un filtro per dare Ulteriori informazioni sulla colonna:

var filter = new Tridion.ContentManager.ListFilter(); 
filter.columns = Tridion.Constants.ColumnFilter.EXTENDED; 
var list = category.getListKeywords(filter); 

Sfortunatamente questo fornisce solo gli attributi XML aggiuntivi:

IsShared="true" IsLocalized="false" 

Mi piacerebbe molto che il valore della descrizione fosse parte di questo XML senza dover creare un oggetto Keyword dall'XML. E 'possibile una cosa del genere?

tosse qualche idea? tosse

risposta

3

Temo che dovrete caricare la stessa parola chiave per ottenere la descrizione. Non è usato in nessun elenco, quindi non viene restituito nell'XML.

2

È sempre possibile creare un List Extender per aggiungere queste informazioni all'elenco, ma cercare di essere intelligente su di esso poiché questo extender verrà eseguito ogni volta che viene chiamata una GetList.

Non ti salverà dall'aprire ogni parola chiave nell'elenco, ma lo farai lato server (con Core Service/NetTcp per esempio) che sarà probabilmente più facile e veloce dell'apertura di ogni parola chiave con Anguilla.

0

Grazie per entrambe le risposte chaps. In questo caso ho solo bisogno di una sola parola chiave, quindi la prendo semplicemente dal CMS. Ottenere un oggetto in Anguilla è un po 'strano, ecco il codice in chiunque evento è interessato:

1) Nella vostra area codice principale:

var selectedKy = $models.getItem("TcmUriOfKeywordHere"); 
    if (selectedKy.isLoaded()) { 
    p.selectedKy = selectedKy; 
    this.onselectedKyLoaded(); 
    } else { 
    $evt.addEventHandler(selectedKy, "load", this.onselectedKyLoaded); 
    selectedKy.load(); 
    } 

Vale la pena di notare come devo conservare la parola chiave nelle proprietà dell'articolo, in modo che possa avere nel onselectedKyLoaded funzione

2) la funzione chiamata una volta che l'articolo è stato caricato

ContentBloom.ExampleGuiExtension.prototype.onselectedKyLoaded = function (event) { 
    var p = this.properties; 
    var selectedDescription = p.selectedKy.getDescription(); 
    // do what you need to do with the description :) 
}; 

decisi thi s, grazie alla risposta qui: https://stackoverflow.com/a/12805939/1221032 - Cheers Nuno :)

Problemi correlati