如何从Component DWT中访问组件模板ID?

Fra*_*len 10 tridion

在我的组件的HTML模板中,我需要写出组件模板的TCM URI:

<!-- Start Component Presentation: {"ComponentID" : "@@Component.ID@@",
                        "ComponentTemplateID" : "@@ComponentTemplate.ID@@" } -->
Run Code Online (Sandbox Code Playgroud)

但不幸的ComponentTemplate.ID是不存在.

如何从Component DWT中访问组件模板ID?

Mih*_*riu 11

我担心你必须写一个C#TBB(片段或汇编):

TcmUri templateId = engine.PublishingContext.ResolvedItem.Template.Id;
if (templateId.ItemType == ItemType.ComponentTemplate) {
    Item item = package.CreateStringItem(ContentType.Text, templateId.ToString());
    package.PushItem("ComponentTemplateID", item);
}
Run Code Online (Sandbox Code Playgroud)

您只能从Page DWT布局中访问ComponentTemplate.ID ...

  • 也许不需要大量的代码。显然@@ID@@返回预览和发布中的组件模板ID,但不返回模板生成器。例如,“@@Component.ID@@ @@ID@@”在模板生成器中给我“tcm:6-1541 tcm:6-1541”,但“tcm:6-1541 tcm:7-81-32”在预览中。 (2认同)