【问题标题】:SDL Tridion GetListKeywords using Anquilla Framework使用 Anquilla 框架的 SDL Tridion GetListKeywords
【发布时间】:2012-12-07 02:23:25
【问题描述】:

我正在编写一个 GUI 扩展并使用 Anquilla 框架来获取 Category 中的 Keywords 列表。我正在获取关键字列表的 XML 文档,然后在我的扩展程序中使用该文档。

我的问题是返回的 XML 不包含关键字的“Description”值。我有 Title 和 Key 等。

我的原始代码如下所示:

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 的一部分,而不必从 XML 创建关键字对象。这样的事情可能吗?

咳嗽有什么想法吗? 咳嗽

【问题讨论】:

    标签: tridion tridion-2011


    【解决方案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();
         }
      

      值得注意的是我如何将关键字存储在item的属性中,所以我可以在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 :)

    【讨论】:

      【解决方案2】:

      您始终可以创建一个List Extender 来将此信息添加到列表中,但请谨慎使用它,因为每次调用 GetList 时都会执行此扩展程序。

      不会让您不必打开列表中的每个关键字,但您将在服务器端进行(例如使用 Core Service/NetTcp),这可能比使用 Anguilla 打开每个关键字更容易和更快.

      【讨论】:

        【解决方案3】:

        恐怕您必须加载关键字本身才能获得说明。 它没有在任何列表中使用,因此不会在 XML 中返回。

        【讨论】:

          猜你喜欢
          • 2012-06-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-04-16
          • 1970-01-01
          • 2012-05-12
          • 2023-04-10
          • 1970-01-01
          相关资源
          最近更新 更多