我们正在使用带有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等).
如果随后编辑并重新保存主要版本,它将成为新的次要修订版本(例如v1.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>
Run Code Online (Sandbox Code Playgroud)
注意......在上面的模板中,可以指定一个主要版本作为tcmse:PublishBinary parameter例如concat($binaryid,"-v2")确定要发布的版本,但因为它不允许你指定一个次要版本,所以这并没有真正帮助太多
我最近确实没有对 XSLT 模板做太多工作,不确定我能提供帮助。无论如何,您可以确认这是否仅适用于 XSLT,还是其他模板也会发生?如果它只发生在 XSLT 上,那么您可能会遇到错误,而如果它发生在所有其他语言上,那么它可能只是“设计使然”,除了打开增强请求之外,您无能为力。
我最近发现,如果我请求任何项目的版本 0 (tcm:1-23-16-v0),Tridion 将返回当前用户允许读取的项目的最新版本,包括次要版本(在 c# 中)。也许你可以尝试一下?
| 归档时间: |
|
| 查看次数: |
272 次 |
| 最近记录: |