使用Tridion Razor模板时发布PDF
我在使用Razor模板从Tridion发布二进制文件(PDF文件)时遇到问题 我有一个组件模板,设置为“作为动态组件发布”,带有一个单链接多媒体模式 我正在使用,组件模板包含两个模板构建块:使用Tridion Razor模板时发布PDF,razor,tridion,razor-mediator,Razor,Tridion,Razor Mediator,我在使用Razor模板从Tridion发布二进制文件(PDF文件)时遇到问题 我有一个组件模板,设置为“作为动态组件发布”,带有一个单链接多媒体模式 我正在使用,组件模板包含两个模板构建块: 一个Razor模板,输出一些HTML和指向多媒体组件中二进制文件的链接 默认完成操作TBB包含以下内容: 在包中发布二进制文件 链路分解器 目标群体个性化 清理模板 将Xml转换为Html Razor模板包含以下代码(我稍微简化了一下): 这似乎正确解析了二进制链接,并生成以下动态组件表示: 我遇到
- 在包中发布二进制文件
- 链路分解器
- 目标群体个性化
- 清理模板
- 将Xml转换为Html
附言:为这些照片道歉。Stackoverflow不想正确格式化代码。我没有使用Razor Mediator,但是您是否尝试将
默认完成操作
或在包中发布二进制文件
TBBs添加到模板中?不幸的是,Razor Mediator当前在标记中没有将PDF二进制文件添加到包中(因此不会被发布二进制文件TBB接受),尽管我有一个非常好的感觉,版本1.3将处理这个问题;)
同时,您可以使用TBB的“添加未解析的二进制依赖项”类型。我现在手头上没有,但是如果你需要的话请告诉我,我会在今晚晚些时候帮你发代码
编辑
取消我关于它没有被添加到包中的声明,我正在考虑一个不同的场景
请尝试以下操作:
<a href="@Component.ID">@Component.Metadata.title</a>
这对我很有用:
@{
var item = TridionHelper.Package.CreateMultimediaItem(Component.ID);
TridionHelper.Package.PushItem("CurrentMultimedia", item);
}
当然,接下来是PublishBinariesInPackage,虽然您也可以以类似的方式访问引擎,但是直接添加二进制也可以工作 SLacks——正如您的链接所说,我认为问题在于“在代码块中忽略了标记和HTML”。谢谢,乔恩。你确定要和弗兰克打个招呼吗。是的,我同意您通常必须启用从模板中发布二进制文件。然而,由于Razor中介具有“extractBinaries”设置,我怀疑这应该能够处理它。谢谢,嗨,克里斯。组件模板已包含“默认完成操作”TBB(其中包含“在包中发布二进制文件”TBB)。问题是二进制文件永远不会出现在要发布的包中。谢谢,乔恩,谢谢亚历克斯。我以为功能会在那里-我只是不知道语法。我一回到办公室就会尝试一下,并发布最新消息。嗨,亚历克斯。非常感谢您对此的回复。我已经对它进行了测试,似乎使用了您建议的语法将PDF组件添加到包中并发布了它。但是,这会引起另一个问题,因为它不会将组件的tcmId附加到文件名。这意味着,如果发布两个具有相同文件名的PDF(包含在Tridion的不同文件夹中),则会出现错误,并且发布失败。由于我的站点有数千个PDF,我怀疑我可能不得不为此使用单独的TBB。非常感谢。