避免Tridion相关代码中硬编码的TCM URI
我们经常需要Tridion相关代码中的特定项(模式、模板或组件)。模板、内容交付、工作流或Business Connector(核心服务)经常需要引用。我们可以链接到组件,但我通常会看到硬编码的值或其他所有内容的WebDAV URL 硬编码值 我知道硬编码Tridion内容管理器(本机)URI是一种糟糕的做法,除了以下几种情况:避免Tridion相关代码中硬编码的TCM URI,tridion,Tridion,我们经常需要Tridion相关代码中的特定项(模式、模板或组件)。模板、内容交付、工作流或Business Connector(核心服务)经常需要引用。我们可以链接到组件,但我通常会看到硬编码的值或其他所有内容的WebDAV URL 硬编码值 我知道硬编码Tridion内容管理器(本机)URI是一种糟糕的做法,除了以下几种情况: 简化示例代码并明确变量是什么 当生成用于内容交付(CD)API逻辑时 只要有可能,我们就使用给定的API或WebDAV URL来引用项目,否则我们必须避免在引用TC
- 简化示例代码并明确变量是什么
- 当生成用于内容交付(CD)API逻辑时
- 使用SDL Content Porter,设计模板构建块(TBB)或其他模板格式中的硬编码值保持不变(在CMS环境中移动时会中断关系,以下描述的例外情况除外)
- 引用特定项的“配置”组件在SDL Content Porter中也表现得更好,尽管不同名称的路径可能会“破坏”关系
- 阅读不同语言的CMS作者
- 将项目名称和路径翻译为适当的语言
- 可能有助于用户更好地导航(例如,我怀疑不同的命名文件夹可能会减少对作者在蓝图中的位置的混淆)
- 我做对了吗?有更简单或更容易维护的设置吗?
- 任何人都有
方法的例子吗?我是否在TBB和/或DWT的顶部使用该方法,并且引用是否会被替换而不考虑模板中介(例如,这是否适用于XSLT中介、Razor中介等)#include
- 包含的参考资料在较低版本的出版物中有效吗?还是仅用于内容波特?换句话说,如果我引用“tcm:5-123”,模板是否正确引用出版物17中的“tcm:17-123”
AbstractTemplateContentHandler
找到文档中的一个良好起点
SDL Tridion自己的Dreamweaver模板实现有这样一个处理程序。我刚刚查看了,它目前使用了Dreamweaver内容处理程序。显然,对于现有的各种XSLT模板类型实现
由于这是SDL Tridion的一个扩展点,所包含的引用在较低版本的出版物中是否“正确”工作取决于实现者对其含义的看法
一个有趣的可能性是实现您自己的自定义处理程序,该处理程序的行为符合您的意愿。模板类型配置(在Tridion Content Manager配置文件中)允许独立指定给定模板类型的中介器和内容处理程序,这意味着您可以为现有模板类型定制内容处理行为。我倾向于遵循一些简单规则
Publication.WebDavUrl
或PublicationData.LocationInfo.WebDavUrl
获取URL的其余部分xlink:href
内容)我还倾向于使用“配置页面”进行内容交付,模板输出我可能需要从内容交付应用程序“知道”的TCM ID。然后在运行时将其作为一组配置变量、字典或常量加载(我想这取决于我当时的感受)。使用绝对webdav URL也是完全合法的。通常,您在配置时就知道该项位于哪个发布中。