【问题标题】:Should I use tcdl, Tridion tag, or RenderComponentPresentation?我应该使用 tcdl、Tridion 标签还是 RenderComponentPresentation?
【发布时间】:2012-12-09 22:09:18
【问题描述】:

使用 Tridion 管理“全球”徽标

例如,要使用 SDL Tridion 管理网站范围的徽标及其文本元素,我希望它在一个组件中,由(动态)组件模板呈现,并由页面模板放置。我的要求包括:

  1. Logo as a Component--图像作为多媒体 (mm) 组件和链接、alt(即“home”)以及可选容器组件中的其他文本
  2. 动态组件展示 (DCP)--能够管理徽标的标记展示并发布更改无需发布每个页面
  3. 可共享--能够在较低级出版物中本地化组件中的多媒体和文本,而不是模板

作者不需要将徽标作为组件演示 (CP) 放置在每个页面上,尽管仅在主页上的徽标 CP 可以提供动态链接。

RenderComponentPresentation()TCDLTridion 标记“非 CP”

对于这种无 CP 的方法,我认为 RenderComponentPresentation() 或 TCDL tag 将是正确的“不可知论”方法。一个比另一个更受欢迎吗?

例如,我的模板输出:

<h3>By tridion: (ASP.NET) tag</h3>
<tridion:ComponentPresentation runat="server"
    PageURI="tcm:7-1535-64"
    ComponentURI="tcm:7-1533"
    TemplateURI="tcm:7-1532-32"/>

<h3>By tcdl: tag</h3>
<tcdl:ComponentPresentation
    PageURI="@@Page.ID@@"
    type="Dynamic"
    ComponentURI="tcm:7-1533"
    TemplateURI="tcm:7-1532-32"/>

<h3>by render component presentation</h3>
@@RenderComponentPresentation('tcm:7-1533','tcm:7-1532-32')@@

这些在文件系统上被转换为以下内容。

<h3>By tridion: (ASP.NET) tag</h3>
<tridion:ComponentPresentation runat="server"
    PageURI="tcm:7-1535-64"
    ComponentURI="tcm:7-1533"
    TemplateURI="tcm:7-1532-32"/>

<h3>By tcdl: tag</h3>
<tridion:ComponentPresentation runat="server"
    PageURI="tcm:7-1535-64"
    ComponentURI="tcm:7-1533"
    TemplateURI="tcm:7-1532-32"/>

<h3>by render component presentation</h3>
<tridion:ComponentPresentation runat="server"
    PageURI="tcm:7-1535-64"
    ComponentURI="tcm:7-1533"
    TemplateURI="tcm:7-1532-32"/>

每个呈现交付端,以便用户在浏览器中看到正确的 CP。

问题:

  1. 任何方法都可以让我们获得从 PT 引用的 DCP,该 DCP 具有不可知格式,可在演示端检索,避免全站点发布。它实际上并不在页面上,所以我们必须确保发布带有动态 CT 的徽标(在这种情况下是 html 片段)。 我错过了什么吗?

  2. RenderComponentPresentation() 是否优于 TCDL 或特定的演示端语法? 有什么理由我实际上想要 &lt;tridion:ComponentPresentation runat="server"&gt; 代替?

编辑:我错过了Type="Dynamic" 属性和值,还一度认为 RenderComponentPresentation 没有创建正确的 CP 引用。

【问题讨论】:

    标签: tridion tridion-content-delivery


    【解决方案1】:

    我想基本上你已经自己回答了你的第一个问题,除了你想如何在你的模板中写出来之外,你还有你的 DCP。

    我的偏好是使用@@RenderComponentPresentation('tcm:7-1533','tcm:7-1532-32')@@,但实际上我不会将它与硬编码的 TCMURI 一起使用。我可能会编写一个 TBB,它从某个配置组件或发布元数据中读取多媒体组件 TCMURI 及其模板 URI,然后您的模板可能类似于:

    @@RenderComponentPresentation(${LogoUri}, ${LogoTemplateUri})@@
    

    在您的布局中使用 Dreamwever TBB 时,我会将此作为首选项。如果您使用另一种布局方式,那么下一个最好的方法是使用 TCDL 标签。确实要尝试使您的模板代码不可知。唯一一次我会自己重新编写 tridion 控制代码,就是当我无法以其他方式实现它时。

    【讨论】:

    • 很好,+1 并被接受。是的,当我更多地研究它时,我有点想通了主要问题。我同意与技术无关的方法是可行的方法。
    猜你喜欢
    • 2017-11-12
    • 2017-11-07
    • 2013-02-26
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    相关资源
    最近更新 更多