如何使用Tridion解析器从发布中删除项?

如何使用Tridion解析器从发布中删除项?,tridion,resolver,Tridion,Resolver,我正在尝试为组件实现一个自定义解析器,如Chris所述: 我想删除组件中使用的一些二进制文件(主要是pdf),并阻止它们发布。我可以使用item.GetListUsedItems方法获取已使用项的列表。如何移除它们 使用:tridion 2009检查下面要删除的代码段,您需要检查多媒体是否为pdf,但这会让您继续。这里的参考链接也用示例代码进行了很好的解释(下面的代码来自同一篇文章) 在发布时,冲突解决程序进程将确定应发布哪些项,例如在发布结构组时,默认冲突解决程序会将结构组中的所有页面添加

我正在尝试为组件实现一个自定义解析器,如Chris所述:

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


使用:tridion 2009

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


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

解析程序只处理发布事务中可直接发布的项,这些项是页面和动态组件表示。因此解析程序不会处理链接的多媒体组件,这些组件是通过调用
AddBinary()
方法由模板代码发布的


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

我认为resolveditems列表中有组件。我正在尝试删除组件中的二进制项如何在组件中发布二进制文件?是通过DWT代码吗?如果是通过DWT,那么为什么要使用解析器删除二进制文件,因为这样会导致二进制链接中断。如果您正在发布二进制文件,则上述代码将满足您的需要,并带有
ComponentType.Multimedia
的检查条件。如果您有时间,请使用相同的SO帐户注册。@Bart+1用于指出差异。Frank van Puffelen在图中展示了两种方法(通过模板代码隐式/
AddBinary()
和通过多媒体发布和动态组件模板显式)。
       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 ..
                }
            }
        }