【发布时间】:2023-03-16 00:57:01
【问题描述】:
我正在使用 Magnolia 5.6 Enterprise Pro CMS,并且我有一个类型列表区域,其中包含一个可用组件:
areas:
steps:
renderType: freemarker
availableComponents:
step:
id: obi-module:components/step
这样我就可以在steps区域添加N个相同类型的组件了。
问题:现在我想在step组件的模板脚本中显示组件索引,但是不知道怎么实现。
在外部组件的模板脚本中,我可以执行以下操作:
[#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]
在 step 组件的模板脚本中,我可以使用 index 变量:
${(ctx.index)!'#'}
这显示了所需的从 1 开始的索引号,但现在在 Magnolia 中我无法再编辑组件,因为我没有为 step 组件获得典型的绿色 Magnolia 编辑器栏。 p>
当我这样放置模板脚本时:
[#assign stepList=cmsfn.children(content.steps) ]
...
<p>Number of steps: ${stepList?size!'#'}</p>
...
[@cms.area name="steps" /]
我可以编辑组件,但我不知道如何获取(列表)索引。
有谁知道如何做到这一点?
【问题讨论】:
-
我对 Magnolia 的特定部分一无所知,但注意到一些无关的东西。
${list?size!'#'}永远不会打印#。如果您想在缺少list时这样做,那么您需要${(list?size)!'#'}。
标签: java freemarker magnolia