Отобразить индекс компонента в шаблонном скрипте Magnolia - PullRequest
0 голосов
/ 27 июня 2018

Я использую CMS Magnolia 5.6 Enterprise Pro, и у меня есть область списка типов с одним доступным компонентом:

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

Таким образом, я могу добавить 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 я больше не могу редактировать компоненты, так как у меня нет обычной зеленой панели редактора Magnolia для step компонентов.

Когда я ставлю шаблонный скрипт так:

[#assign stepList=cmsfn.children(content.steps) ]

...

<p>Number of steps: ${stepList?size!'#'}</p>

...

[@cms.area name="steps" /]

Я могу редактировать компоненты, но не знаю, как получить индекс (список).

Кто-нибудь знает, как этого добиться?

Ответы [ 2 ]

0 голосов
/ 28 июня 2018

Мой плохой - я перебирал компоненты шага из скрипта компонента (внешнего) шага, но я должен сделать это внутри скрипта области. Таким образом, я изменил свое определение компонента шагов на это:

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]
0 голосов
/ 28 июня 2018

это встроенный бесплатный маркер _index ... вы можете попробовать это:

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

РЕДАКТИРОВАТЬ: если это не сработает, попробуйте component?index вместо component_index ... зависит только от версии freemarker, поставляемой с magnolia для используемой вами версии magnolia.

...