Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I control which linked Components are published when I publish a specific Component?

Tags:

tridion

I am using SDL Tridion 2011 SP1. I have Components A, B and C. Component C is linked with A & B.

If I publish C, both Component A and B are getting published. But I want only Component A to be published.

Can any one explain how to exclude Component B from publishing?

like image 213
user1374332 Avatar asked May 04 '12 07:05

user1374332


1 Answers

What you are experiencing is the default behaviour of Tridion. This is by design, to ensure that when you change content in a component, publishing it will update all instances of that content on the website.

As the other answers suggest you can change this behaviour using a Custom Resolver:

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

The code example above demonstrates you can get access to a collection called resolvedItems. This is a list of items due to be published, unless you make a change to it.

You can iterate through this list and remove items according to your requirements.

like image 131
Dave Houlker Avatar answered Oct 25 '22 00:10

Dave Houlker