我正在尝试为Chris所描述的组件实现一个自定义解析器: http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attribute
我想删除组件中使用的一些二进制文件(主要是pdf)并阻止它们发布。我可以使用item.GetListUsedItems方法获取已使用项目的列表。如何删除它们?
使用:tridion 2009
答案 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 ..
}
}
}