1

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

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

如何在dreamweaver中迭代和访问“组件链接”的字段?此外,组件字段支持三种不同的模式,我们想在 Dreamweaver 中检查这些模式名称。

我发现这篇文章很有用。但是更多的细节确实很棒。

4

5 回答 5

4

看看这些问题:

Tridion 练习手册中的这一页:

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

如果这些不能回答您的问题,请更新您的问题

  1. 组件的相关 XML片段
  2. 显示您已经尝试过的 DWT片段
于 2012-09-07T11:27:36.107 回答
3

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

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

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

于 2012-09-07T12:04:16.070 回答
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. 在 Dreamweaver 模板之前使用Generic SDL Tridion 2011 模板构建块中的“获取链接组件”.Net TBB ,这会将链接的组件放入模板包中,以便您可以直接迭代它们
  3. 编写您自己的 .Net TBB 来处理与这些链接相关的特定业务逻辑并输出 html(不推荐)或您可以从 DWT 处理的命名包项目、项目或项目数组。
  4. 从您的 DWT 调用另一个(嵌套)组件模板@@RenderComponentPresentation(Field, "tcm:x-xx-32")@@
  5. 以上任意组合
于 2012-09-07T13:49:17.707 回答
2

您可以遍历嵌入模式字段段落中的多值字段段落,如下所示:

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

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

<!-- TemplateEndRepeat -->
于 2012-09-07T11:29:54.540 回答
1

请尝试使用以下代码:

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

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

          <!-- TemplateBeginRepeat name="paragraphs0.Internal_Link" -->
于 2012-09-07T12:09:24.910 回答