6

我正在尝试为克里斯描述的组件实现自定义解析器: http ://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-属性

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

使用:tridion 2009

4

2 回答 2

9

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

解析器仅处理发布事务中可直接发布的项目,即页面和动态组件表示。所以解析器不处理链接的多媒体组件,它们是由模板代码通过调用AddBinary()方法发布的。

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

于 2012-08-01T07:48:33.933 回答
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 ..
                }
            }
        }
于 2012-07-31T13:01:08.363 回答