使用Tridion Razor模板时发布PDF

时间:2012-04-18 13:40:32

标签: razor tridion razor-mediator

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

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

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

  1. 一个Razor模板,用于输出一些HTML和多媒体组件中二进制文件的链接。
  2. 默认完成操作TBB包含以下内容:
    • 在包中发布二进制文件
    • Link Resolver
    • 目标群体个性化
    • 清理模板
    • 将Xml转换为Html
  3. Razor模板包含以下代码(我稍微简化了一下): enter image description here

    这似乎正确解析二进制链接并生成以下动态组件演示: enter image description here

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

    由于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不想正确格式化代码。

3 个答案:

答案 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 ActionsPublish Binaries in Package TBB添加到模板中?