我正在尝试为克里斯描述的组件实现自定义解析器: http ://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-属性
我想删除组件中使用的一些二进制文件(主要是 pdf)并阻止它们发布。我可以使用 item.GetListUsedItems 方法获取使用过的物品列表。如何删除它们?
使用:tridion 2009
我正在尝试为克里斯描述的组件实现自定义解析器: http ://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-属性
我想删除组件中使用的一些二进制文件(主要是 pdf)并阻止它们发布。我可以使用 item.GetListUsedItems 方法获取使用过的物品列表。如何删除它们?
使用:tridion 2009
在发布时,解析器进程确定应该发布哪些项目,例如当您发布结构组时,默认解析器会将结构组中的所有页面添加到发布事务中。
解析器仅处理发布事务中可直接发布的项目,即页面和动态组件表示。所以解析器不处理链接的多媒体组件,它们是由模板代码通过调用AddBinary()
方法发布的。
如果您想从发布操作中删除多媒体组件,您应该查看处理这些组件的组件模板(如果将它们添加到包中,默认完成操作 TBB 通常会选择它们并发布它们)。但请记住,多媒体组件需要至少发布一次,否则您将永远无法在演示服务器上获得它。
检查以下代码片段以删除,您需要检查多媒体是否为 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 ..
}
}
}