8

私は GUI 拡張機能を作成しており、Anquilla フレームワークを使用してKeywords内のリストを取得していCategoryます。キーワードのリストの XML ドキュメントを取得し、拡張機能内でそのドキュメントを操作しています。

Description私の問題は、返された XML にキーワードの ' ' 値が含まれていないことです。私はタイトルとキーなどを持っています。

私の元のコードは次のようになります。

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

返される典型的なノードは次のとおりです。

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

そこで、フィルターを使用して追加の列情報を提供しようとしました:

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

残念ながら、これは追加の XML 属性のみを提供します。

IsShared="true" IsLocalized="false"

XML から Keyword オブジェクトを作成せずに、説明の値をこの XML の一部にしたいのです。そのようなことは可能ですか?

をするアイデアはありますか?

4

3 に答える 3

3

残念ながら、説明を取得するにはキーワード自体をロードする必要があります。どのリストでも使用されていないため、XML では返されません。

于 2012-12-19T17:06:16.467 に答える
2

リスト エクステンダーを作成してこの情報をリストに追加することはいつでもできますが、このエクステンダーは GetList が呼び出されるたびに実行されるため、注意してください。

リスト内のすべてのキーワードを開く必要がなくなるわけではありませんが、サーバー側で (たとえば Core Service/NetTcp を使用して) 行うことになります。おそらく、Anguilla で各キーワードを開くよりも簡単で高速です。

于 2012-12-19T18:14:55.067 に答える
0

この例では、必要なキーワードは 1 つだけなので、CMS から取得するだけです。アンギラでオブジェクトを取得するのは少し奇妙です。コードは次のとおりです。

  1. あなたのメインコードエリアで:

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

    アイテムのプロパティにキーワードを保存する方法に注目する価値があるので、onselectedKyLoaded関数で取得できます

  2. アイテムが読み込まれたときに呼び出される関数

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

ここでの回答のおかげで、これを解決しました: https://stackoverflow.com/a/12805939/1221032 - Cheers Nuno :)

于 2012-12-21T15:50:20.387 に答える