如何使用Tridion Resolver从发布中删除项目?

时间:2012-07-31 12:56:16

标签: tridion resolver

我正在尝试为Chris所描述的组件实现一个自定义解析器: http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attribute

我想删除组件中使用的一些二进制文件(主要是pdf)并阻止它们发布。我可以使用item.GetListUsedItems方法获取已使用项目的列表。如何删除它们?

使用:tridion 2009

2 个答案:

答案 0 :(得分:9)

在发布时,解析程序进程确定应发布哪些项目,例如发布结构组时,默认解析程序会将结构组中的所有页面添加到发布事务。

解析器仅处理可直接发布的“发布事务”中的项目,这些项目是“页面”和“动态组件演示文稿”。因此,解析器不处理链接的多媒体组件,这些组件是通过调用AddBinary()方法由模板代码发布的。

如果要从“发布”操作中删除“多媒体组件”,则应查看正在处理这些组件的组件模板(如果它们已添加到包中,则默认完成操作TBB通常会选择它们并发布它们)。但请记住,多媒体组件至少需要发布一次,否则您将无法在演示服务器上获得它。

答案 1 :(得分:3)

请检查以下代码段以删除,您需要检查多媒体是否为pdf但是会让您前进。这里的参考链接也很好地解释了示例代码(下面的代码来自同一篇文章)。

http://www.tridiondeveloper.com/a-custom-resolver-in-practice

       Component component = (Component)item;
        if (component.ComponentType == ComponentType.Multimedia)
        {
            foreach (ResolvedItem resolvedItem in originalResolveItemList)
            {
                if (resolvedItem.Item.Id != item.Id)
                {
                    resolvedItems.Remove(resolvedItem); // to remove ..
                }
            }
        }