在DD4T上,如何输出MMC资源类型为“Exernal”的URL


1

我正在使用Tridion 2013 SP1和DD4T(Java版本)。 我想将二进制文件放在Tridion之外,并将其作为多媒体组件进行管理。所以我做了以下程序。

  1. 创建多媒体组件。
  2. 在“资源类型”上选择“外部”。
  3. Tridion之外的二进制文件的输入URL(例如http://image.com/img.jpg)。
  4. 将多媒体组件分配给组件的多媒体链接字段。
  5. 发布组件。

但发布的二进制文件的URL与多媒体组件的外部URL不同。 (在发布的同时,Tridion似乎从URL下载二进制文件并将其发布。)

我希望的行为是Tridion不会下载二进制文件,而只是输出多媒体组件的URL。

<a href="http://image.com/img.jpg"> 

所以我定制DD4T的默认TBB,通过修改 “DD4T.Templates.Base.Utils.BinaryPublisher” 的 “PublishItem” 的方法。 我的自定义源代码如下。

 if (mmComp.BinaryContent.IsExternal) 
     { 
      publishedPath = mmComp.BinaryContent.ExternalBinaryUri.AbsoluteUri; 
     } 
     else 
     { 
      Binary binary = engine.PublishingContext.RenderedItem.AddBinary(mmComp); 
      publishedPath = binary.Url; 
     } 

这个定制似乎工作,但我不知道没有“副作用”。

此定制是否正确?

是否有其他TBB代码需要修改?

Regards,

  0

嗨你能详细说明你如何能够管理这些;获取DD4T源代码文件;修改它;编译它;获取DLL并将其与默认的DD4T模板绑定。我需要满足相同的要求,并需要一些细节如何完成;谢谢 26 4月. 172017-04-26 07:01:54

0

该修改对我来说很合适。我不认为你需要改变这个工作。

这将影响所有使用外部URL的多媒体组件的发布...也许您更愿意使用多媒体组件上的元数据来控制此功能以触发发布方法,从而为您提供更大的灵活性?

  0

我认为Tridion不会在Tridion CM DB中下载和存储二进制文件,因为binary不是在BINARIES表中创建的。另外模板(Java)已经被创建。如果使用此自定义,则不需要修改模板。这就是为什么我不使用元数据或外部链接字段的原因。 12 4月. 162016-04-12 01:00:36

  0

D'oh!我总是会忘记CM何时下载数据......它在发布时会这样做,所以是的,mod在这方面很好。对于元数据字段,我的意思是在多媒体组件上使用复选框或其他内容来控制它的发布方式,而不是存储网址......我不认为这会影响您的模板 12 4月. 162016-04-12 06:43:52