7

我们使用带有 XSLT 模板的 Tridion 2009 SP1

一个全新的多媒体组件 (v0.0) 及其上传的二进制文件将在首次保存时正确发布到预览站点(二进制的发布由 tbbPublishMultimedia模板完成,如下所示)。

多媒体组件将作为次要修订版本 v0.1 进入工作流程,并且在工作流程中(在“准备版内容项”处)可以编辑组件,并且可以根据需要由作者将二进制文件重新上传到组件中。

每次将 v0.x 组件保存在工作流中(如 v0.1、v0.2、v0.3、v0.4 等)时,组件的最新“工作流中”版本及其二进制文件都会正确发布到预览网站。

每次多媒体组件被批准发布时,它都会离开工作流程并成为一个新的主要版本(例如 v1.0.... 或 v2.0、v3.0 等)。

如果随后编辑并重新保存了主要版本,它将成为新的次要修订版本(egv1.1),然后将重新发布到预览站点(其二进制文件也是如此),然后重新进入工作流程。

然而,虽然 Tridion 正确发布了实际多媒体组件的最新次要修订版本(例如 v1.1),但它似乎只发布了它包含的二进制文件的最后一个主要版本(例如 v1.0 版本)。有趣的是,它似乎确实发布了该二进制文件的最新 v1.1 元数据(即文件类型和文件大小),而不是二进制文件本身。

总之,如果多媒体组件是 v0.x,Tridion 似乎会发布二进制文件的最新次要/修订“工作流程中”版本,但一旦存在主要版本,它只会发布二进制文件的最后一个主要版本(本质上是重新进入工作流程之前的版本)。

反正就是这个样子……

  <xsl:template name="tbbPublishMultimedia">
     <xsl:if test="string(//tcm:Type)='Multimedia'">
        <xsl:variable name="binaryid"
        select="string(//tcm:Component/@ID)"/>
        <xsl:element name="tcm:MultimediaPublishedFileName">
           <xsl:value-of select="tcmse:PublishBinary($binaryid)"/>
        </xsl:element>
     </xsl:if>
  </xsl:template>

注意...在上面的模板中,可以将主要版本指定为tcmse:PublishBinary parameter例如concat($binaryid,"-v2")确定要发布的版本,但是因为它不允许您指定次要版本,所以这并没有太大帮助

4

1 回答 1

2

最近我真的没有用 XSLT 模板做太多事情,不确定我是否能提供帮助。无论如何,您可以确认这仅适用于 XSLT 还是其他模板也会发生?如果它只发生在 XSLT 上,那么您可能会遇到一个错误,而如果它发生在所有其他语言上,那么它可能只是“设计使然”,除了打开增强请求之外,您无能为力。

我最近发现,如果我要求任何项目的版本 0 (tcm:1-23-16-v0),Tridion 将返回当前用户可以阅读的项目的最新版本,包括次要版本(在 c# 中)。也许你可以试试看?

于 2012-02-23T12:00:30.470 回答