使用Tridion Razor模板时发布PDF

使用Tridion Razor模板时发布PDF,razor,tridion,razor-mediator,Razor,Tridion,Razor Mediator,我在使用Razor模板从Tridion发布二进制文件(PDF文件)时遇到问题 我有一个组件模板,设置为“作为动态组件发布”,带有一个单链接多媒体模式 我正在使用,组件模板包含两个模板构建块: 一个Razor模板,输出一些HTML和指向多媒体组件中二进制文件的链接 默认完成操作TBB包含以下内容: 在包中发布二进制文件 链路分解器 目标群体个性化 清理模板 将Xml转换为Html Razor模板包含以下代码(我稍微简化了一下): 这似乎正确解析了二进制链接,并生成以下动态组件表示: 我遇到

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

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

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

  • 一个Razor模板,输出一些HTML和指向多媒体组件中二进制文件的链接
  • 默认完成操作TBB包含以下内容:
    • 在包中发布二进制文件
    • 链路分解器
    • 目标群体个性化
    • 清理模板
    • 将Xml转换为Html
  • Razor模板包含以下代码(我稍微简化了一下):

    这似乎正确解析了二进制链接,并生成以下动态组件表示:

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

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

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

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

    我可以编写一个新的TBB来确保将二进制文件添加到包中,但是如果Razor中介已经提供了该功能,我更愿意避免这样做

    提前谢谢


    附言:为这些照片道歉。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。非常感谢。