2012-05-04 41 views
5

Tôi đang sử dụng SDL Tridion 2011 SP1. Tôi có các thành phần A, B và C. Hợp phần C được liên kết với A & B.Làm cách nào để kiểm soát các Thành phần được liên kết nào được xuất bản khi xuất bản một Thành phần cụ thể?

Nếu tôi xuất bản C, cả Thành phần A và B đều được xuất bản. Nhưng tôi chỉ muốn Thành phần A được xuất bản.

Bất kỳ ai có thể giải thích cách loại trừ Hợp phần B khỏi xuất bản không?

Trả lời

8

Cho đến nay tôi biết không có cách nào dễ dàng để thực hiện việc này. Khi bạn xuất bản một mục Tridion sẽ giải quyết tất cả các mục liên quan và được liên kết và xuất bản chúng.

Bạn có thể sử dụng hệ thống sự kiện hoặc trình giải quyết tùy chỉnh để đạt được mong muốn mà bạn đang yêu cầu. Liên kết này có thể giúp: http://nunolinhares.blogspot.com/2011/10/tridion-publisher-and-custom-resolvers.html

3

Nếu bạn đưa lên từ API bạn có thể đặt IncludeComponentLinks tài sản của ResolveInstruction-false, hoặc, như Bappi chỉ làm điều này trong xử lý sự kiện

+1

Anh ấy có thể, nhưng điều đó có nghĩa là chỉ Component C sẽ được xuất bản. Khi xuất bản Component C, anh ta muốn Component A cũng được publish, nhưng không phải Component B. Một resolver là cách duy nhất để thực hiện điều đó tôi nghĩ. –

10

Những gì bạn đang trải qua những mặc định là hành vi của Tridion. Điều này là do thiết kế, để đảm bảo rằng khi bạn thay đổi nội dung trong một thành phần, xuất bản nó sẽ cập nhật tất cả các trường hợp của nội dung đó trên trang web.

Như câu trả lời khác đề nghị bạn có thể thay đổi hành vi này sử dụng một Resolver tùy chỉnh:

using Tridion.ContentManager; 
using Tridion.ContentManager.CommunicationManagement; 
using Tridion.ContentManager.ContentManagement; 
using Tridion.ContentManager.Publishing; 
using Tridion.ContentManager.Publishing.Resolving; 

public class UpdateResolvedItems : IResolver 
{ 
     public void Resolve(
      IdentifiableObject item, 
      ResolveInstruction instruction, 
      PublishContext context, 
      Tridion.Collections.ISet<ResolvedItem> resolvedItems) 
     { 
      foreach (ResolvedItem resolvedItem in resolvedItems) 
      { 
      // Check resolved items, and remove accordingly 
      } 
     } 
} 

Ví dụ mã trên chứng tỏ bạn có thể được tiếp cận với một bộ sưu tập được gọi là resolvedItems. Đây là danh sách các mục được xuất bản, trừ khi bạn thay đổi nó.

Bạn có thể lặp qua danh sách này và xóa các mục theo yêu cầu của bạn.

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