Вызовите ViewHelper из шаблона Fluid

В моей общей настройке страницы я определяю шаблон следующим образом: page.10.template.file = fileadmin/template.html

Есть ли способ вызвать MVC ViewHelper в этом шаблоне? Фрагмент

{namespace xyz=PATH\TO\MY\ViewHelpers}
<xyz:myhelper argument="abc" />

не работает в приведенном выше шаблоне, он отображается как есть.

1 ответ

Решение

Мне не совсем понятно, какой объект вы используете для шаблона своей страницы. Если вы хотите использовать Fluid ViewHelpers в своем шаблоне страницы, я бы порекомендовал использовать FLUIDTEMPLATE для вашего шаблона страницы.

1. ШАБЛОН

Если вы используете FLUIDTEMPLATE для своего шаблона страницы, то вы можете использовать любой доступный ViewHelper (из FLUID или любого другого расширения ExtBase / Fluid) непосредственно в своем шаблоне (см. Пример ниже).

TypoScript

page = PAGE
page.10 = FLUIDTEMPLATE
page.10 {
  template = FILE
  template.file = fileadmin/templates/template.html
  partialRootPath = fileadmin/templates/Partials/
  layoutRootPath = fileadmin/templates/Layouts/
  variables {
    content < styles.content.get
    content.select.where = colPos=1
  }
}

Содержимое файла: fileadmin/templates/template.html

{namespace xyz=NAMESPACE\EXTENSION\ViewHelpers}

<f:layout name="Main" />

<f:section name="Content">
  <xyz:myhelper argument="abc" />
  <f:format.html parseFuncTSPath="">{content}</f:format.html>
</f:section>

Содержимое файла: fileadmin/templates/Layouts/Main.html

<f:render section="Content" />

2. ШАБЛОН

Если вы используете TEMPLATE (с маркерами и подчастями), вы не можете напрямую использовать Fluid ViewHelpers в этом шаблоне. Но вы можете определить маркер, который отображает FLUID ViewHelper, как показано ниже.

TypoScript

page = PAGE
page.10 = TEMPLATE
page.10 {
  template = FILE
  template.file = fileadmin/templates/template.html
  marks {
    CONTENT < styles.content.get
    VIEWHELPER = FLUIDTEMPLATE
    VIEWHELPER {
      template = FILE
      template.file = fileadmin/templates/viewhelper.html
      partialRootPath = fileadmin/templates/Partials/
      layoutRootPath = fileadmin/templates/Layouts/
    }
  }
  workOnSubpart = DOCUMENT
}

Содержимое файла: fileadmin/templates/template.html

<!--###DOCUMENT### Start-->
###VIEWHELPER###
###CONTENT###
<!--###DOCUMENT### end-->

Содержимое файла: fileadmin/templates/viewhelper.html

{namespace xyz=NAMESPACE\EXTENSION\ViewHelpers}

<f:layout name="Main" />

<f:section name="Content">
  <xyz:myhelper argument="abc" />
</f:section>

Содержимое файла: fileadmin/templates/Layouts/Main.html

<f:render section="Content" />
Другие вопросы по тегам