2012-12-19 4 views
8

Ich schreibe eine GUI-Erweiterung und mit dem Anquilla-Framework, um eine Liste von Keywords innerhalb einer Category zu erhalten. Ich erhalte ein XML-Dokument für die Liste der Schlüsselwörter, die dann mit diesem Dokument innerhalb meiner Erweiterung arbeiten.SDL Tridion GetListKeywords mit Anquilla Framework

Mein Problem ist, dass das zurückgegebene XML nicht den Wert "Description" des Schlüsselwortes enthält. Ich habe den Titel und Key usw.

Mein Original-Code sieht wie folgt aus:

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

Ein typischer Knoten zurückgegeben wird, ist dies:

<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> 

Also habe ich versucht, einen Filter verwenden zu geben Weitere Informationen zur Spalte:

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

Leider gibt dies nur die zusätzlichen XML-Attribute:

IsShared="true" IsLocalized="false" 

Ich würde wirklich gerne den Beschreibungswert als Teil dieses XML verwenden, ohne ein Schlüsselwortobjekt aus dem XML erstellen zu müssen. Ist so etwas möglich?

husten irgendwelche ideen? husten

Antwort

3

Ich fürchte, Sie müssen das Schlüsselwort selbst laden, um die Beschreibung zu erhalten. Es wird in keiner Liste verwendet, daher wird es nicht im XML zurückgegeben.

2

Sie könnten immer eine List Extender erstellen, um diese Informationen zur Liste hinzuzufügen, aber versuchen Sie es schlau zu machen, da diese Erweiterung bei jedem Aufruf einer GetList ausgeführt wird.

Es wird Sie nicht davon abhalten, jedes Schlüsselwort in der Liste zu öffnen, aber Sie tun es serverseitig (zB mit Core Service/NetTcp), was wahrscheinlich einfacher und schneller ist als das Öffnen jedes Schlüsselwortes mit Anguilla.

0

Danke für beide Antworten chaps. In diesem Fall benötige ich nur das eine Schlüsselwort, also bekomme ich es einfach vom CMS. ein Objekt in Anguilla zu bekommen ist ein bisschen komisch, hier ist der Code für den Fall, jemand interessiert:

1) In Ihrem Haupt-Codebereich:

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

Es ist bemerkenswert, wie ich das Schlüsselwort in den Eigenschaften speichern geladen

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

rief ich bekommen kann ich gelöst ist das Element des Artikels, es so in der einst

2) die Funktion onselectedKyLoaded Funktion thi s, dank der Antwort hier: https://stackoverflow.com/a/12805939/1221032 - Prost Nuno :)