2012-12-19 22 views
8

Tôi đang viết một tiện ích mở rộng GUI và sử dụng khung Anquilla để có danh sách Keywords trong một số Category. Tôi lấy một tài liệu XML cho danh sách từ khóa rồi làm việc với tài liệu đó trong phần mở rộng của tôi.SDL Tridion GetListKeywords sử dụng Anquilla Framework

Vấn đề của tôi là XML trả về không chứa giá trị 'Description' của từ khóa. Tôi có Tiêu đề và Key, vv

mã ban đầu của tôi trông như thế này:

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

Một nút điển hình trở lại là thế này:

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

Vì vậy, tôi đã cố gắng sử dụng một bộ lọc để cung cấp cho thông tin bổ sung về cột:

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

Rất tiếc, điều này chỉ cung cấp các thuộc tính XML bổ sung:

IsShared="true" IsLocalized="false" 

Tôi thực sự muốn giá trị mô tả là một phần của XML này mà không phải tạo đối tượng Từ khóa từ XML. Là một điều như vậy có thể?

ho bất kỳ ý tưởng nào? ho

Trả lời

3

Tôi e rằng bạn sẽ phải tải Chính từ khóa để có Mô tả. Nó không được sử dụng trong bất kỳ danh sách nào, vì vậy nó không được trả lại trong XML.

2

Bạn luôn có thể tạo một List Extender để thêm thông tin này vào danh sách, nhưng hãy cố gắng thông minh về nó vì trình mở rộng này sẽ thực thi mọi lúc một GetList được gọi.

Sẽ không giúp bạn không phải mở từng từ khóa trong danh sách, nhưng bạn sẽ làm việc đó ở phía máy chủ (ví dụ: Dịch vụ cốt lõi/NetTcp), điều này có thể dễ dàng và nhanh hơn mở mỗi từ khóa Anguilla.

0

Cảm ơn cả hai câu trả lời. Trong trường hợp này, tôi chỉ cần một từ khóa, vì vậy tôi chỉ cần lấy nó từ CMS. Bắt một đối tượng trong Anguilla là một chút lạ, đây là mã trong bất cứ sự kiện quan tâm:

1) Trong khu vực mã chính của bạn:

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

Nó đáng chú ý làm thế nào tôi lưu trữ các từ khóa trong các thuộc tính của mặt hàng đó, vì vậy tôi có thể lấy nó trong onselectedKyLoaded chức năng

2) chức năng gọi là một lần mục được nạp

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

tôi giải quyết thi s, nhờ câu trả lời ở đây: https://stackoverflow.com/a/12805939/1221032 - Cheers Nuno :)

Các vấn đề liên quan