我在使用Razor Templating从Tridion发布二进制文件(PDF文件)时遇到问题。
我有一个组件模板,设置为“作为动态组件发布”,带有一个链接的多媒体模式。
我正在使用Razor Mediator eXtension,而组件模板包含两个模板构建块:
Razor模板包含以下代码(我稍微简化了一下):
这似乎正确解析二进制链接并生成以下动态组件演示:
我遇到的问题是二进制本身从未添加到包中,因此不会发布。
由于Razor Mediator在Tridion.ContentManager.config文件中有一个'extractBinaries'设置,我怀疑应该由调解器将二进制文件添加到包中。我已确保将extractBinaries设置设置为“true”,但二进制文件未添加到包中(尽管正在处理的多媒体组件在包中作为tridion / component项)。
有谁知道这项功能是否可用并且在Razor Mediator中工作了吗?我怀疑Razor Mediator期望链接代码采用特定格式,但我在documentation中找不到任何相关内容。
我还尝试将“从Html提取二进制文件”TBB添加到组件模板(遵循Razor模板)但是我收到以下错误: “项目输出必须具有指定的属性TCMURI”。 我怀疑这是由于Razor Mediator将“输出”项添加到包中的方式。
我可以编写一个新的TBB以确保将二进制文件添加到包中,但如果Razor Mediator已经提供了该功能,我宁愿避免这样做。
提前致谢。
P.S。为图像道歉。 Stackoverflow不想正确格式化代码。
答案 0 :(得分:7)
不幸的是,Razor Mediator目前在标签中没有将PDF二进制文件添加到包中(因此不会被发布二进制文件TBB拾取),尽管我非常感觉版本1.3将会处理这个;)。
与此同时,您可以使用“添加未解析的二进制依赖关系”类型的TBB。我目前还没有它,但如果你需要它,请告诉我,我会在今晚晚些时候为你发布代码。
修改强> 取消我关于它没有被添加到包中的声明,我在想一个不同的场景。
请尝试以下方法:
<a href="@Component.ID">@Component.Metadata.title</a>
答案 1 :(得分:2)
这对我有用:
@{
var item = TridionHelper.Package.CreateMultimediaItem(Component.ID);
TridionHelper.Package.PushItem("CurrentMultimedia", item);
}
当然接下来是PublishBinariesInPackage,虽然你也可以用类似的方式访问引擎,也许直接的AddBinary也可以。
答案 2 :(得分:0)
我没有使用Razor Mediator,但您是否尝试将Default Finish Actions
或Publish Binaries in Package
TBB添加到模板中?