从外部Fluid模板调用ViewHelper

时间:2015-01-04 09:58:59

标签: typo3 viewhelper

在我的常规页面设置中,我按如下方式定义模板:page.10.template.file = fileadmin/template.html

有没有办法在这个模板中调用MVC ViewHelper?摘录

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

在上述模板中不起作用,它按原样浮出水面。

1 个答案:

答案 0 :(得分:3)

对我来说,这不是100%明确,您使用哪个cObject作为页面模板。如果您想在页面模板中使用Fluid ViewHelpers,我建议您使用FLUIDTEMPLATE作为页面模板。

<强> 1。 FLUIDTEMPLATE

如果您使用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

如果您使用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" />