我有一个Dynamic XML模板,它将XML发布到Broker数据库,然后使用Component Presentation工厂动态加载。Tridion 2009 SP1:图像缩略图 - 如何发布原始图像?
此Xml包含图像的URL。我需要一个缩略图和一个完整的图像可用。我已经设法使用Image Resizer TBB生成缩略图,但是我希望这会添加单独的软件包和可引用的二进制文件,但似乎覆盖了全尺寸图像。
有没有一种方法可以让我的Xml和Package没有编写自己的自定义TBB?
我有一个Dynamic XML模板,它将XML发布到Broker数据库,然后使用Component Presentation工厂动态加载。Tridion 2009 SP1:图像缩略图 - 如何发布原始图像?
此Xml包含图像的URL。我需要一个缩略图和一个完整的图像可用。我已经设法使用Image Resizer TBB生成缩略图,但是我希望这会添加单独的软件包和可引用的二进制文件,但似乎覆盖了全尺寸图像。
有没有一种方法可以让我的Xml和Package没有编写自己的自定义TBB?
外表套上内容传送可以存储多个变体同一多媒体组分。每个这样的变体都有一个标识它的ID,并且没有ID的变体(在新版本中#def#作为它的ID)被称为默认变体。
当您从DWT引用图像时,它会自动添加为渲染引擎执行DWT时打包的项目。此项目稍后由作为默认完成操作一部分的默认“发布二进制包”TBB进行处理。包中的发布二进制文件TBB通过调用AddBinary
来发布二进制文件 - 您可以通过查看在Tridion论坛here(需要登录)上发布的大多数默认TBB的原始代码来验证这一点。
appliedTemplateUri = new TcmUri(item.Properties[Item.ItemPropertyTemplateUri]);
...
engine.AddBinary(itemUri, appliedTemplateUri, targetStructureGroup,
data, fileName);
的AddBinary
方法被称为在TOM.NET CHM定义为:
public abstract string AddBinary(
TcmUri componentUri,
TcmUri templateUri,
TcmUri targetLocation,
byte[] data,
string fileName
)
所以文件,你可以在最后一次通话看到AddBinary
,在包装TBB发布二进制文件采用的是属性(看看here如果你从来没有听说过的Item.Properties
所),以确定哪些变体发布(如果该属性不存在,则发布该二进制文件作为默认变体)。
掌握了所有这些知识后,任务变得非常简单:您必须确保MMC中包含两个二进制项目,每个项目具有不同的Item.ItemPropertyTemplateUri
属性值。
默认的Image Resizer TBB替换它调整大小的项目的二进制内容,并且不设置此属性。因此,您必须编写的最少代码是重复项目的预处理器TBB或重新添加项目的后处理器TBB。在这两种情况下,TBB都必须设置“魔法”属性。
有用的链接:
感谢您的全面解答。我会试试这个。 – 2012-07-20 13:23:22
基本上所有的图像调整TBB确实是已经调整图像中包,所以默认完成操作TBBcan发布它(使用AddBinary()调用)。
所以你需要的是Resizer TBB逻辑的轻微改变(你需要在这里自己做点什么),这样它就不会重新调整包中的原始项目,而是发布它的一个变体。然后在交付方有两个可用的图像(例如,通过将调整大小的图像发送给不同的结构组来区分它们)。
>>“没有写我自己定制的TBB?”No. – 2012-07-20 12:27:56