如何控制在发布特定组件时发布哪些链接组件



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

如果我发布 C,则组件 A 和 B 都会发布。但我只想发布组件 A。

谁能解释一下如何将组件B排除在发布之外?

您正在经历的是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
           }
      }
}

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

您可以循环访问此列表并根据需要删除项目。

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

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

如果您从 API 发布,您可以将 ResolveInstruction 的属性设置为 false IncludeComponentLinks ,或者,正如 Bappi 指出的那样,在事件处理程序中执行此操作

最新更新