SDL Tridion の Content Manager テンプレート API (TOM.NET) は、公開またはレンダリング コンテキストを検出する方法を提供します。
ユースケース
- 特定の環境にデバッグ情報を表示します (例: TCM Uris はステージングのみ)
- プレビューで別のマークアップを表示する (例: 公開されたページへのリンクを表示する)
- Experience Manager または SiteEdit でさまざまな作成可能なフィールドを表示する
私はいくつかの例を見て試してみましたが、同僚のStanとEricの間のチャットをたどった後、TOM.NET (6.1 / Tridion 2011) を確実にフォローしたいと思います。
シナリオ
- 特定の発行ターゲットへの発行(通常は「ライブ」および「ステージング」)
- コンテンツ マネージャー エクスプローラー(CME) プレビュー
- Experience Manager (XPM) のセッション プレビューレンダリング
- (追加)テンプレートビルダー
1. ターゲットへの (またはパブリケーションからの) パブリッシュ
Tridion.ContentManager.Publishing.PublishEngine.GetPublishInfo(IdentifiableObject item)
項目はページまたはコンポーネントになります。PublishInfo
これはオブジェクトのコレクションを返します。これには、PublicationTarget
発行先を確認するためのものが含まれます。
Tridion.ContentManager.Templating.PublishingContext.PublicationTarget
も持っPublicationTarget
ています。
2. CME プレビュー
PublicationTarget はnull
です。 Publication Target がないため、これは理にかなっています。:-)
3. セッションのプレビュー
RenderMode
以下を持つ Enum を使用しTridion.ContentManager.Publishing
ます。
- '公開' (0)
- 'PreviewStatic' (1)
- 「プレビューダイナミック」 (2)
PublicationTarget は、実際には公開null
されていないセッション プレビュー用ではありません。
4. (追加) テンプレートビルダー
?
Alexander Klockは、CME Preview を除くほとんどの関連例についても説明しています。
質問
見落としているシナリオはありますか? 特定の公開ターゲット、通常のプレビュー、および XPM セッションのプレビューに公開しますか?
PublicationTarget をハードコーディングしないようにするにはどうすればよいですか (たとえば、TCM Uris ではなく文字列値を確認する方がよいでしょうか)。
更新: Vikas の回答に従って、テンプレート ビルダーをリストに追加しました。テンプレート ビルダー内でレンダリングしていることを確認するにはどうすればよいですか?