嵌入式字段中的循环组件链接

时间:2012-09-07 11:17:13

标签: tridion tridion-2011 dwt dreamweaver-templates

我们有一个“组件A”,它具有“嵌入字段”类型的多值字段。 嵌入字段又具有“组件链接”类型的多值字段。

这看起来像: 组件A - >嵌入式Shcema字段 - >组件链接

如何在Dreamweaver中迭代并访问'Component Links '的字段? 组件字段也支持三种不同的模式,我们想在Dreamweaver中检查这些模式名称。

我发现this post很有用。但更多细节确实很棒。

5 个答案:

答案 0 :(得分:4)

看看这些问题:

来自Tridion练习食谱的这个页面:

它们涵盖了访问DWT中的字段时可能遇到的最常见问题。

如果这些问题没有回答您的问题, 更新您的问题

  1. 您的组件的相关XML 片段
  2. DWT 片段 显示您已尝试过的内容

答案 1 :(得分:3)

您可以轻松地遍历多值嵌入字段的组件链接,但没有直接获取组件链接值的方法,您必须使用dwt扩展名或.net tbb。 sdltridionworld.com上有一些可用。

我之前使用嵌套模板做过这个。您还可以根据循环中组件链接字段组件的模式,从主dwt tbb尝试嵌套/子模板。

我还建议使用剃须刀模板。

答案 2 :(得分:2)

您可以迭代嵌入式架构字段段落中的多值字段段落,如下所示:

<!-- TemplateBeginRepeat name="Component.Fields.paragraphs" -->

    <h2>@@Field.header@@ (@@TemplateRepeatIndex@@)</h2>
    <!-- TemplateBeginRepeat name="Field.paragraph" -->
        <p>@@Field@@</p>
    <!-- TemplateEndRepeat -->

<!-- TemplateEndRepeat -->

答案 3 :(得分:2)

正如Vikas之前提到的,重复多值嵌入式架构字段的多值组件链接字段相对简单。您的DWT代码应遵循以下形式:

<!-- TemplateBeginRepeat name="XML Name of Embedded Schema Fields" -->
    <!-- TemplateBeginRepeat name="XML Name of multivalued Component Link field" -->
        @@Field@@  - Should write out the TCM ID of your linked component
    <!-- TemplateEndRepeat -->
<!-- TemplateEndRepeat -->

但是,您无法使用“开箱即用”的Dreamweaver模板访问这些组件的字段或架构详细信息。

你可以:

  1. 在您的Content Manager服务器上安装Dreamweaver Get eXtension,这样您就可以使用@@Get(...)@@语法
  2. 检索链接组件的字段(以及其他内容)
  3. 在Dreamweaver模板之前使用Generic SDL Tridion 2011 Template Building Blocks中的“获取链接组件”.Net TBB,它将链接的组件放入模板包,以便您可以直接迭代它们
  4. 编写您自己的.Net TBB来处理与这些链接相关的特定业务逻辑并输出html(不推荐)或您可以从DWT处理的命名包项,项目或项目数组。
  5. 使用@@RenderComponentPresentation(Field, "tcm:x-xx-32")@@
  6. 从DWT调用另一个(嵌套)组件模板
  7. 以上
  8. 的任何组合

答案 4 :(得分:1)

请尝试使用以下代码:

          <!-- TemplateBeginRepeat name="paragraphs" -->
               <!-- TemplateBeginRepeat name="Internal_Link" -->
                 <!-- TemplateBeginIf cond = "Internal_Link != ''" -->
                    <p> @@Component.ID@@ </p>
                 <!-- TemplateEndIf -->
               <!-- TemplateEndRepeat -->
         <!-- TemplateEndRepeat -->

要检查第0个组件,您可以使用以下代码:

          <!-- TemplateBeginRepeat name="paragraphs0.Internal_Link" -->