2012-10-29 33 views
5

Giả sử các ấn phẩm sau đây cho câu hỏi này.Xuất bản gốc thành phần

20 Content -> tcm: 0-20-1

...

...

...

70 Web -> tcm: 0-121-1

tôi là một thành phần được tạo dưới (20 Nội dung) xuất bản và tôi xuất bản thành phần này từ một trong các ấn phẩm con (70 Web). Tôi đang sử dụng mẫu Dreamweaver để viết giao diện người dùng và tôi đang gọi các hàm tùy chỉnh C# từ DWT. Trong khi xuất bản, thành phần này sẽ được gọi là 121-432 trong phần trình bày thành phần. Có cách nào để có được ấn phẩm gốc của nơi thành phần được tạo ra không? Đó là tôi sẽ nhận được 20-432, thay vì nhận 121-432.

Tôi đã thử Thành phần .GetBluePrintChain() và nó trả về danh sách có tất cả phân cấp kế hoạch chi tiết. Tôi có thể nhận được mục đầu tiên từ danh sách này để có được thành phần này với ấn bản nơi nó thực sự được tạo ra.

Vì tôi sẽ phải gọi phương thức này ở nhiều nơi, tôi chỉ muốn kiểm tra xem có cách nào khác trực tiếp/tốt hơn để thực hiện việc này hay không.

Có ai đề nghị không?

Trả lời

7

Bạn sẽ muốn nhìn vào OwningRepository tài sản của Hợp phần, vì vậy:

var componentIdInOwningPublication = new TcmUri(
    component.Id.ItemId, 
    ItemType.Component, 
    component.OwningRepository.Id.ItemId 
); 

Đặt đó vào một chức năng Dreamweaver-callable tùy chỉnh và bạn sẽ được tốt để đi.

Cập nhật Ngoài ra còn có một phương pháp helper gọi CreateTcmUriForPublication mà không được dịch. Vì vậy, bạn cũng có thể gọi một cái như thế này:

var componentIdInOwningPublication = TemplateUtilities.CreateTcmUriForPublication(
    component.OwningRepository.Id.ItemId, 
    component.Id 
); 

Kết quả cuối cùng của cả hai đoạn là giống nhau: TcmUri của thành phần trong bối cảnh kho lưu trữ của chính nó.

+2

Đồng ý với việc kiểm tra OwningRepository, nhưng tôi nghĩ bạn đã nhận được thứ tự các đối số sai. Trong TOM.NET, chữ ký là 'public TcmUri (int itemId, ItemType itemType, int publicationId)' vì một số lý do. –

+0

Cảm ơn Peter, tôi đã cập nhật câu trả lời của mình. –

+0

@FrankvanPuffelen Tôi đã thử điều này nhưng tôi vẫn không nhận được id xuất bản của cấp độ tạo thành phần. Tôi đang có một thành phần trong 020 publicaton & có một CT trong 030 ấn phẩm thiết kế và trong khi làm xem trước trong ấn phẩm web 070, tôi vẫn thấy tcm id của 070 xuất bản. – Balaji

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