Tridion 2009 SP1:图像缩略图 - 如何发布原始图像?

Rob*_*ett 3 broker tridion tridion2009

我有一个动态组件模板,它将XML发布到Broker数据库,然后使用Component Presentation工厂动态加载.

此Xml包含图像的URL.我需要一个缩略图和一个完整的图像.我设法使用Image Resizer TBB来生成缩略图,但我希望这会添加可以引用的单独的包项和二进制文件,但它似乎会覆盖全尺寸图像.

有没有办法在不编写我自己的自定义TBB的情况下可以同时使用我的Xml和包?

Fra*_*len 9

Tridion Content Delivery可以存储同一多媒体组件的多个变体.每个这样的变体都有一个标识它的ID,没有ID的变体(在较新版本中#def#作为其ID)被称为默认变体.

当您从DWT引用图像时,它会在渲染引擎执行DWT时自动添加为要打包的项目.然后,此项目由默认的"在包中发布二进制文件"TBB处理,该TBB是默认完成操作的一部分.TBB中的发布二进制文件通过调用AddBinary它们来发布二进制文件- 您可以通过查看Tridion论坛上发布的大多数默认TBB的原始代码来验证这一点(需要登录).

appliedTemplateUri = new TcmUri(item.Properties[Item.ItemPropertyTemplateUri]);
...
engine.AddBinary(itemUri, appliedTemplateUri, targetStructureGroup, 
                 data, fileName);
Run Code Online (Sandbox Code Playgroud)

AddBinary调用的方法在TOM.NET CHM中定义为:

public abstract string AddBinary(
    TcmUri componentUri,
    TcmUri templateUri,
    TcmUri targetLocation,
    byte[] data,
    string fileName
)
Run Code Online (Sandbox Code Playgroud)
  • componentUri 此项指的多媒体组件
  • templateUri 执行此AddBinary调用的上下文模板(用作变量id)
  • targetLocation 将二进制文件发布到的位置(如果为null,则发布到标准路径)
  • 数据 的二进制数据发布
  • fileName 要在其下发布文件的文件名

正如您在上次调用中看到的那样,AddBinaryTBB中的发布二进制文件使用属性(如果您从未听说过,请查看此处Item.Properties)来确定要发布的变体(如果属性为,则将二进制文件发布为默认变体)不存在).

掌握了所有这些知识后,任务变得非常简单:您必须确保MMC包中有两个二进制项,每个项都具有不同的Item.ItemPropertyTemplateUri属性值.

默认的Image Resizer TBB替换它调整大小的项目的二进制内容,但不设置此属性.因此,您必须编写的代码最少的是复制项目的预处理器TBB或重新添加项目的后处理器TBB.在这两种情况下,TBB也必须设置"魔法"属性.

有用的链接: