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

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

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

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

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


person bernland    schedule 04.01.2015    source источник


Ответы (1)


Мне не на 100% ясно, какой объект cObject вы используете для своего шаблона страницы. Если вы хотите использовать 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" />
person derhansen    schedule 04.01.2015
comment
Спасибо, я использую оба объекта cObject для шаблонов страниц в различных проектах. Это действительно хорошо работает! - person bernland; 09.01.2015