使用2个模板链接动态组件

Ric*_*ead 8 tridion

假设我有一个使用set模式的组件,并且该组件与两个相对的组件模板一起使用,例如:

组件:产品A.

模板一:产品营销

模板二:产品支持

通过动态组件链接,我希望能够使用组件的tcm uri指定内容所在位置的超链接(使用Dreamweaver模板即<a href="tcm:11-xxxx">Link text</a>)

问题是,如果链接生成到我正在处理的网站的错误部分,即产品营销部分的产品支持链接,反之亦然.

我已经尝试设置模板的链接优先级...都设置为高....但Tridion似乎使用发布的最后一个模板来决定链接应该去哪里.

此外,如果我将其中一个模板设置为中等,另一个模板设置为高,则只需使用具有最高优先级的模板链接到内容(即所有链接都转到产品支持,即使在产品营销部分)

有谁知道如何解决这个问题?谢谢!

Chr*_*ers 8

您的问题与已发布的组件演示文稿的上下文有关.SDL Tridion按如下方式解析目标CP的优先级(如果有多个匹配,它只会移动到下一步):

  1. 查找具有最高优先级的CP(优先级高2)
  2. 找到最接近当前页面的那个,查看当前的结构组(SG),子SG,兄弟SG等(你似乎也有2个)
  3. 最后的回退场景是它链接到最近发布的一个(这是你所看到的)

这通常是由于您有动态组件演示(DCP)实际上不在页面上,或者由于某种原因未在链接代码中设置页面ID,因此它无法计算当前的位置CP,因此必须从上面跳过步骤(2).

这可能无法帮助您解决问题,但它确实解释了您所看到的内容.所以我可以提供更多的帮助,请解释一下您发布的内容(是DCP吗?),并可能查看已发布的代码并检查是否已将页面URI添加到链接代码中(并确保它不是tcm) :0-0-0).

  • 事实上,"接近"算法可能非常适合这里.带有链接的页面是否与站点需要链接到的站点位于同一部分? (2认同)
  • 我在CreateAndBreak.net上[描述接近顺序](http://www.createandbreak.net/2012/05/how-to-remember-tridion-dynamic-linking.html).不过,我不知道关系.好消息! (2认同)

Ram*_*m G 8

除了Chris评论之外,您还可以使用tridion:excludetemplateuri属性来精确控制您可以链接到哪个组件模板,具体取决于您的营销或支持需求.

在DWT ..你可以使用这样的东西.

<a tridion:href="tcm:8-299" tridion:excludetemplateuri="tcm:8-420-32">linkText</a>
Run Code Online (Sandbox Code Playgroud)

这是供参考链接

  • Chris,我们在我们的一个项目中使用它们,具有类似用例的独特需求.我们没有对它们进行硬编码,但是我们有一个C#TBB,它具有带webdav URL的参数模式,它解析为TCM ID并设置一个包变量.@Richard,正如Chris所说,你不应该在你的DWT中硬编码模板ID.您应该使用Webdav URL和C#TBB来处理WebDav URL到TCMID. (2认同)