首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tridion2009 SP1:图像缩略图-如何发布原始图像?

Tridion2009 SP1:图像缩略图-如何发布原始图像?
EN

Stack Overflow用户
提问于 2012-07-20 19:15:58
回答 2查看 592关注 0票数 3

我有一个动态组件模板,它将XML发布到代理数据库,然后使用组件表示工厂动态加载。

此Xml包含指向图像的URL。我需要一个缩略图和一个完整的图像可用。我已经设法使用Image Resizer TBB来生成缩略图,然而,我希望这将添加单独的包项目和可引用的二进制文件,但它似乎覆盖了完整大小的图像。

有没有一种方法,我可以在不编写自己的自定义TBB的情况下,将Xml和包都放入其中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-20 20:12:29

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

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

代码语言:javascript
复制
appliedTemplateUri = new TcmUri(item.Properties[Item.ItemPropertyTemplateUri]);
...
engine.AddBinary(itemUri, appliedTemplateUri, targetStructureGroup, 
                 data, fileName);

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

代码语言:javascript
复制
public abstract string AddBinary(
    TcmUri componentUri,
    TcmUri templateUri,
    TcmUri targetLocation,
    byte[] data,
    string fileName
)

多媒体组件此项引用执行此

  • componentUri调用的上下文的模板(用作发布二进制文件的位置的变体(如果为null,则将二进制数据发布到标准to
  • templateUri AddBinary to publish
  • fileName文件名以在

下发布文件

因此,正如您在对AddBinary最后一次调用中所看到的,软件包TBB中发布的二进制文件使用一个属性(如果您从未听说过Item.Properties,请查看here )来确定要发布的变量(如果该属性不存在,则将二进制文件发布为默认变量)。

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

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

有用的链接:

票数 9
EN

Stack Overflow用户

发布于 2012-07-20 20:18:47

基本上,Image Resizer TBB所做的就是调整包中已有图像的大小,因此默认的Finish Actions TBBcan会发布它(使用AddBinary()调用)。

因此,您需要对Resizer TBB的逻辑稍作更改(您需要在这里自己做一些事情),以便它不会调整包中原始项的大小,而是发布它的一个变体。然后,您在交付端有两个可用的图像(例如,您可以通过将调整大小的图像发送到不同的结构组来区分它们)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11578243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档