在 Magnolia 模板脚本中呈现组件索引



我正在使用 Magnolia 5.6 Enterprise Pro CMS,我有一个类型列表区域,其中包含一个可用组件:

areas:
steps:
renderType: freemarker
availableComponents:
step:
id: obi-module:components/step

因此,我可以将 N 个相同类型的组件添加到步骤区域。

问题:现在我想在步骤组件的模板脚本中显示组件索引,但我不知道如何实现这一点。

在外部组件的模板脚本中,我可以执行以下操作:

[#assign stepList=cmsfn.children(content.steps) ]
...
<p>Number of steps: ${stepList?size!'#'}</p>
...
[#list stepList as component]
[@cms.component content=component contextAttributes={'index':component?counter} /]
[/#list]

步骤组件的模板脚本中,我可以使用索引变量:

${(ctx.index)!'#'}

这将根据需要显示从 1 开始的索引号,但现在在 Magnolia 中,我无法再编辑组件,因为我没有得到步骤组件的典型绿色 Magnolia 编辑器栏。

当我像这样放置模板脚本时:

[#assign stepList=cmsfn.children(content.steps) ]
...
<p>Number of steps: ${stepList?size!'#'}</p>
...
[@cms.area name="steps" /]

我可以编辑组件,但我不知道如何获取(列表(索引。

有谁知道如何实现这一目标?

我的错- 我正在迭代(外部(步骤组件脚本中的步骤组件,但我必须在区域脚本中执行此操作。所以我将我的步骤组件定义更改为:

areas:
steps:
renderType: freemarker
templateScript: /my-module/components/steps-area.ftl
availableComponents:
step:
id: my-module:components/step

区域模板脚本(steps-area.ftl(看起来像这样:

[#list components as component]
[@cms.component content=component contextAttributes={'index':component?counter} /]
[/#list]

它是一个内置的自由标记,叫做_index...你可以试试这个:

[#list components as component ]
Component Number: '${component_index + 1!}'
[@cms.component content=component /]
[/#list]

编辑:如果这不起作用,请尝试component?index而不是component_index...仅取决于您正在使用的 Magnolia 版本的 Magnolia 随附的 FreeMarker 版本。

最新更新