gpt4 book ai didi

tridion - 我们可以在 DWT(布局)模板构建 block 中循环什么?

转载 作者:行者123 更新时间:2023-12-04 12:22:42 24 4
gpt4 key购买 nike

我知道我们可以开箱即用地循环或迭代 DWT 模板构建块 (TBB) 中的数组,如下所示。

<!-- TemplateBeginRepeat name="array_name" -->
<!-- template logic -->
<!-- TemplateEndRepeat -->

documentation describes pre-defined package items以及 how to use them .

总之,我们可以使用:
  • Component在迭代组件或组件演示时引用当前组件
  • ComponentTemplate在迭代组件演示时引用当前组件模板(这将在页面级别)
  • Field在迭代字段以及多值字段时引用当前字段。
  • FieldPath获取迭代项的完整路径。使用 TemplateRepeatIndex 时很有用在嵌套循环中,如 The Tridion Practice Cookbook 中所示.*
  • TemplateRepeatIndex ,从零开始的循环计数。

  • 我们可以在 Fields 上进行嵌套循环在 Components 数组循环内的给定 Component 中,以及在迭代多值字段时有条件地检查特定字段名称。

    我已经通过嵌套 DWT 的语法(例如 @@Image_${TemplateRepeatIndex}@@ as described on Yet Another Tridion Blog )看到了双重查找。

    问题

    可以肯定的是,这些是复合模板 Package 中的项目或数组/集合。 ,对吗(默认情况下或由我们的代码放置)?

    我们可以“迭代”包中的单独项目吗?

    例如,如果我们在 Package 中有单独的组件,我们可以用 @@Component${TemplateRepeatIndex}@@ 之类的东西“迭代”它们吗? ?
  • 组件 1
  • 组件 2
  • 组件 3

  • 我看到我可以在循环中引用这样的项目,但是我所看到的一切都表明以下情况是不可能的:
    <!-- TemplateBeginRepeat name="@@Component${TemplateRepeatIndex}@@" -->
    <!-- do something with @@Component${TemplateRepeatIndex}@@ -->
    <!-- TemplateEndRepeat -->

    最佳答案

    基本上,DWT 模板允许您迭代数组,并且在 Package 中只有一种我们可以推送自己的数组,即组件展示数组(它可以包含组件模板 TCMURI,但也只能包含组件 TCMURI)。

    通过这个,你可以在包中推送(我指的是)一个虚拟组件数组,你可以使用它来循环,然后通过双重查找功能,使其像循环一组包变量一样工作。

    例如,您将带有三个虚拟 TCMURI 的组件数组推送到包中(它们都可以是 tcm:0-0-0,它们的值无关紧要)。然后创建三个包变量,命名为:Var_0、Var_1、Var_2。现在在您的 DWT 模板中,您可以使用:

    <!-- TemplateBeginRepeat name="MyDummyArray" -->
    @@Var_${TemplateRepeatIndex}@@
    <!-- TemplateEndRepeat -->

    这将导致您获得三个包变量的值。

    不幸的是,没有办法直接创建字符串数组或字段数组,因此对于您想要循环的所有内容,您必须使用现有的字段数组,或创建“虚拟组件数组”。

    从中我们确实可以得出结论,您的示例不可能像所写的那样,但是当您也将带有它们的虚拟数组推送到包中时,您可以遍历它并获得您想要的东西。

    关于tridion - 我们可以在 DWT(布局)模板构建 block 中循环什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947607/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com