【问题标题】:What is the simplest way to override namespace in <tridion:ComponentLink/>在 <tridion:ComponentLink/> 中覆盖命名空间的最简单方法是什么
【发布时间】:2012-11-27 09:42:51
【问题描述】:

对于我基于 ASP.Net 的 Tridion2011 驱动的站点,我需要用一些 custom:ComponentLink/> 替换标准生成的 tridion:ComponentLink/>。

(假设这个自定义控件的语义是一样的,即:只需要替换命名空间部分。)

什么是最简单且干扰最小的方法?

我的猜测是我应该实现标准 LinkTagHandler 的替代方案。对吗?

此解决方案的唯一 [infinitesimal] 缺点是它需要在 cd_deployer_conf 中显式配置所有标记处理程序。

编辑

找到了一个简单的简单解决方案来解决别名命名空间这个非常具体的任务:

<TCDLEngine>
    <Properties>
        <Property Name="aspnet.tagprefix" Value="custom"/>
    </Properties>
</TCDLEngine>

幸运的是,我所有的&lt;tcdl:../&gt; 标签都映射到了&lt;custom:../&gt;,否则,这个小骗子就行不通了。

总的来说,我更赞成 Peter 和 Nuno 关于创建自定义 TCDL 标签处理程序的建议。

(只需要战胜我的懒惰:-)。

编辑 2

糟糕,刚刚注意到,Nuno 建议的正是上述内容!

【问题讨论】:

    标签: tridion tridion-2011 tridion-content-delivery


    【解决方案1】:

    是的,我建议创建您自己的 TCDL 标记处理程序来输出您的自定义控件而不是默认控件。不过,还有另一个潜在的缺点:您需要重新发布页面/组件才能使其生效。

    【讨论】:

      【解决方案2】:

      您可以通过在 cd_deployer_conf(在 TCDLEngine 元素中)更改前缀来轻松控制前缀。

      显然,您需要为该前缀实现控制/标记处理程序,并重新发布应该使用它的每个页面/dcp。

      【讨论】:

        【解决方案3】:

        当然,您根本不需要使用 TCDL。只需直接从您的模板中发出所需的代码。唯一需要为此使用 TCDL 的情况是,如果您有一个通用的针对多个前端平台的硬性要求。

        【讨论】:

        • Dominic,这就是我最初所做的。但是..在模板中包含特定于技术的指令还有另一个原因:RTF 字段中的组件链接。默认情况下,它们由 Link Resolver TBB 处理,这是一段非常单一的代码。因此,在 CM 方面保持与技术无关似乎是明智的想法。
        猜你喜欢
        • 2016-01-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-25
        • 2014-06-14
        • 2018-11-17
        • 1970-01-01
        相关资源
        最近更新 更多