Typo3 按typeNum动态更改Type3流体布局
我正在使用扩展fluidpages,希望按typeNum切换布局。 是否可以根据条件更改f:布局? 这行不通:Typo3 按typeNum动态更改Type3流体布局,typo3,fluid,typo3-6.1.x,flux,Typo3,Fluid,Typo3 6.1.x,Flux,我正在使用扩展fluidpages,希望按typeNum切换布局。 是否可以根据条件更改f:布局? 这行不通: <f:layout name="{f:if(condition: '{typeNum} == 666', then: 'PageAjax', else: 'Page')}"/> 您不能改用if语句吗? IMHO这更容易阅读-如果您需要添加更多依赖于typeNum的参数,它将保持可读性 <f:if condition="{typeNum} == 666">
<f:layout name="{f:if(condition: '{typeNum} == 666', then: 'PageAjax', else: 'Page')}"/>
您不能改用if语句吗? IMHO这更容易阅读-如果您需要添加更多依赖于typeNum的参数,它将保持可读性
<f:if condition="{typeNum} == 666">
<f:then>
<f:layout name="PageAjax">
</f:then>
<f:else>
<f:layout name="Page">
</f:else>
</f:if>
我现在在布局模板中添加了条件。我从打字稿中得到typeNum
<f:if condition="{f:cObject(typoscriptObjectPath:'plugin.nc_template.settings.pageLayout')} == 'Default'">
<p>Default Template</p>
</f:if>
<f:if condition="{f:cObject(typoscriptObjectPath:'plugin.nc_template.settings.pageLayout')} == 'Ajax'">
<p>Ajax Template</p>
</f:if>
默认模板
Ajax模板
我在fedext页面上找到了一个示例,但无法运行:
建议的方法:
所需文件:
- 参考资料/Private/Layouts/Page/0.html
- 参考资料/Private/Layouts/Page/666.html
v:var.convert
ViewHelper来确保正确的值:
我最近也遇到了同样的问题,经过几次研究后找到了解决方案
问题是,不能使用嵌套流体,如
、
或
中的其他流体。否则,您将在缓存文件中得到一个致命错误,即调用非对象上的成员函数getViewHelper()。当您查看缓存文件时,您会发现这是因为未定义$self
因此,我的解决方案是,在\TYPO3\CMS\Fluid\Core\Compiler\TemplateCompiler中搜索
公共函数getLayoutName(
,并在\$currentVariableContainer=\$renderingContext->getTemplateVariableContainer();
之前添加\$self=\$this;
,就像GenerateConfigorSection()
我只接受了内联if条件。但是,无论是基于标记还是内联写入,这都无关紧要。我想我无法访问f:layout部分中的流体if viewhelper。这将不起作用-原因是处理f:layout
节点的值时没有实际呈现模板。这没有任何问题I don’我不能解释为什么上述方法不起作用。为了处理类似的问题,最好了解一下。