【发布时间】:2013-01-28 18:39:39
【问题描述】:
SDL Tridion 的内容管理器模板 API (TOM.NET) 提供了检测发布或呈现上下文的方法。
用例
- 向特定环境提供调试信息(例如,TCM Uris only on Staging)
- 在预览中显示不同的标记(例如显示指向已发布页面的链接)
- 在 Experience Manager 或 SiteEdit 中显示不同的可创作字段
我已经看过并尝试了一些示例,但在关注同事 Stan 和 Eric 之间的聊天后,我想确保我关注 TOM.NET(6.1 / Tridion 2011)。
场景
- 发布到特定的发布目标(通常是“实时”和“暂存”)
- 内容管理器浏览器(CME) 预览
- 会话预览 Experience Manager (XPM) 渲染
- (已添加)模板生成器
1。发布到目标(或从发布)
Tridion.ContentManager.Publishing.PublishEngine.GetPublishInfo(IdentifiableObject item)
Item 将是一个页面或组件。这将返回 PublishInfo 对象的集合,其中包括 PublicationTarget 以确认您要发布到的位置。
Tridion.ContentManager.Templating.PublishingContext.PublicationTarget 也有 PublicationTarget。
2。芝商所预览
PublicationTarget 是null,这是有道理的,因为您没有 Publication Target 。 :-)
3。会话预览
使用Tridion.ContentManager.Publishing下的RenderMode枚举,它有:
- “发布”(0)
- 'PreviewStatic' (1)
- 'PreviewDynamic' (2)
对于 Session Preview,PublicationTarget 不会是 null,这并不是真正的发布。
4。 (添加)模板生成器
?
Alexander Klock also describes some related examples 涵盖了除 CME Preview 之外的大部分内容。
问题
我是否遗漏了任何场景?发布到特定发布目标、定期预览和 XPM 会话预览?
我应该如何避免硬编码 PublicationTargets(例如检查字符串值而不是 TCM Uris 更好)?
更新:根据 Vikas 的回答将模板生成器添加到列表中,我怎么知道我在模板生成器中进行渲染?
【问题讨论】:
-
好问题,有用的答案。谢谢!
标签: tridion