6

我在使用 Razor 模板从 Tridion 发布二进制文件(PDF 文件)时遇到问题。

我有一个组件模板,它设置为“发布为动态组件”,带有一个链接的多媒体模式。

我正在使用Razor Mediator eXtension,组件模板包含两个模板构建块:

  1. 一个 Razor 模板,输出一些 HTML 和多媒体组件中二进制文件的链接。
  2. 默认完成操作 TBB 包含以下内容:
    • 在包中发布二进制文件
    • 链接解析器
    • 目标群体个性化
    • 清理模板
    • 将 Xml 转换为 Html

Razor 模板包含以下代码(我已经稍微简化了): 在此处输入图像描述

这似乎可以正确解析二进制链接并生成以下动态组件表示: 在此处输入图像描述

我遇到的问题是二进制文件本身从未添加到包中,因此不会被发布。

由于 Razor 调解器在 Tridion.ContentManager.config 文件中有一个“extractBinaries”设置,因此我怀疑二进制文件应该由调解器添加到包中。我已确保将 extractBinaries 设置设置为“true”,但是二进制文件并未添加到包中(尽管正在处理的多媒体组件作为 tridion/组件项在包上)。

有谁知道此功能是否可用并在 Razor Mediator 中工作?我怀疑 Razor Mediator 期望链接代码采用特定格式,但我在文档中找不到任何内容。

我还尝试将“从 Html 中提取二进制文件”TBB 添加到组件模板(遵循 Razor 模板),但出现以下错误: “项目输出必须具有指定的属性 TCMURI”。我怀疑这是由于 Razor Mediator 将“输出”项目添加到包中的方式。

我可以编写一个新的 TBB 以确保将二进制文件添加到包中,但如果 R​​azor Mediator 已经提供了该功能,我宁愿避免这样做。

提前致谢。

PS 为图片道歉。Stackoverflow 不想正确格式化代码。

4

3 回答 3

7

不幸的是,Razor Mediator 目前没有在标签中将 PDF 二进制文件添加到包中(因此不会被 Publish Binaries TBB 拾取),尽管我有一种很好的感觉,1.3 版会处理这个问题;) .

同时,您可以使用“添加未解决的二进制依赖项”类型的 TBB。我目前手头没有它,但如果你需要它,请告诉我,我会在今晚晚些时候为你发布代码。

编辑 取消我关于它没有被添加到包中的声明,我在想一个不同的场景。

请尝试以下操作:

<a href="@Component.ID">@Component.Metadata.title</a>
于 2012-04-26T13:06:37.090 回答
2

这对我有用:

@{ 
  var item = TridionHelper.Package.CreateMultimediaItem(Component.ID);
  TridionHelper.Package.PushItem("CurrentMultimedia", item);
}

紧随其后的当然是 PublishBinariesInPackage,尽管您也可以以类似的方式访问引擎,也许直接的 AddBinary 也可以。

于 2012-11-06T15:35:09.260 回答
0

我没有使用过 Razor Mediator,但您是否尝试将TBBDefault Finish ActionsPublish Binaries in PackageTBB 添加到您的模板中?

于 2012-04-18T13:55:50.330 回答