从 Fluid 模板外部调用 ViewHelper
Call ViewHelper from outside Fluid template
在我的一般页面设置中,我将模板定义如下:page.10.template.file = fileadmin/template.html
有没有办法在这个模板中调用 MVC ViewHelper?片段
{namespace xyz=PATH\TO\MY\ViewHelpers}
<xyz:myhelper argument="abc" />
在上述模板中不起作用,它按原样出现。
我不是 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" />
在我的一般页面设置中,我将模板定义如下:page.10.template.file = fileadmin/template.html
有没有办法在这个模板中调用 MVC ViewHelper?片段
{namespace xyz=PATH\TO\MY\ViewHelpers}
<xyz:myhelper argument="abc" />
在上述模板中不起作用,它按原样出现。
我不是 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" />