4

我一直在为以下设置寻找更好的解决方案。我没有积极致力于此,但知道一些可能会欣赏其他处理方式的人。

设置:

  • Tridion 管理的页面有一个单一的“链表”组件链表
  • 单个组件具有到 Tridion 中其他组件的组件链接
  • 链接到的组件通常链接到多媒体组件 (mm)
  • XSLT 组件模板 (XSLT CT) 使用上述内容和指向 PDF 的链接呈现 XML
    • XSL document() 函数用于抓取嵌入(链接到)的内容,所有内容都转换为 XML 节点和属性
    • 带有 publishBinary() 的 TCMScriptAssistant 命名空间发布相关的 PDF 和其他媒体
  • 页面模板只是输出CT的结果

业务需求:

  1. 改进的发布(上次我处理这个问题,其中一些文件因为 PDF 而创建了 2GB 的发布事务)
  2. 已发布的 XML 内容文件必须引用相关的 PDF;超链接有效,但标识符可能无济于事,因为...
  3. 没有 Tridion 内容交付 API,主要是为了独立于存储数据库,但也是为了避免在演示服务器上使用 Tridion 特定的代码(松散耦合的设置和对开发人员的培训较少)

最大的问题是发布过程中的巨大传输包。第二个问题是发布任何链接到的 PDF 都会导致页面重新发布。

尽管可以考虑模块化模板,但如何改进或重新设计此设置,最好不要对现有模板进行太多更改。

动态组件表示可能会起作用,但需要发布到文件系统并且不使用动态链接或代理对象(例如,无标准过滤器、二进制元数据等)。

4

1 回答 1

4

确实有2个问题。我将以相反的顺序处理它们。

为了防止在发布二进制文件时重新发布页面,您可以使用旧版本的 Tridion(2011 年之前)中的事件系统来关闭链接解析,或者对于较新的版本,您可以使用自定义解析器来防止这种情况。Nuno 有一篇文章解释了这一点(http://nunolinhares.blogspot.com/2011/10/tridion-publisher-and-custom-resolvers.html)

您的第二个要严格一些,这在很大程度上是因为您不使用 SDL Tridion CD API 的标准。我会建议单独发布二进制文件(这样可以减小事务包的文件大小),并在请求时使用二进制链接来解析路径。

鉴于这不是一个选项,我认为唯一的方法是仍然使用动态组件表示,然后为 PDfs 使用可预测的唯一文件名(即基于 URI 使用类似 317-12345.pdf 的名称) ,并为所有二进制文件使用一个目录。这样,您就可以使用 XSLT 模板输入二进制文件的路径,因为您知道以后二进制文件的位置。然后,您可以在发布主列表组件或页面时使用自定义解析器来发布二进制文件。

希望有帮助

克里斯

于 2012-02-20T22:01:53.150 回答