发布特定组件时,如何控制发布的链接组件?

use*_*332 5 tridion

我正在使用SDL Tridion 2011 SP1.我有组件A,B和C.组件C与A和B链接.

如果我发布C,则组件A和B都将发布.但我只希望发布组件A.

任何人都可以解释如何从发布中排除组件B吗?

Dav*_*ker 10

您遇到的是Tridion的默认行为.这是设计用于确保在更改组件中的内容时,发布它将更新网站上该内容的所有实例.

正如其他答案所示,您可以使用自定义解析器更改此行为:

 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
           }
      }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码示例演示了您可以访问名为resolvedItems的集合.除非您对其进行更改,否则这是要发布的项目列表.

您可以遍历此列表并根据您的要求删除项目.


小智 8

到目前为止,我知道没有简单的方法可以做到这一点.当您发布一个项目时,Tridion会解析所有相关和链接的项目并发布它们.

您可以使用事件系统或自定义解析器来实现您想要的问题.此链接可能有所帮助:http: //nunolinhares.blogspot.com/2011/10/tridion-publisher-and-custom-resolvers.html