在前端获取布局名称 - 流畅的错字3
Posted
技术标签:
【中文标题】在前端获取布局名称 - 流畅的错字3【英文标题】:Get layout name in front end - fluid typo3 【发布时间】:2017-02-11 10:08:40 【问题描述】:我有一个单页布局的流畅的typo3网站。一个菜单有不同的布局。如何在我的主模板中获取选定的布局名称?
main.html
<v:page.menu levels="1" as="sections">
<f:for each="sections" as="section" iteration="itemIteration">
<f:debug>sections</f:debug>
</f:for>
</v:page.menu>
sub.html
<f:layout name="Pagewithnav" />
<f:section name="Configuration">
<flux:form id="subnav" icon="f:uri.resource(path: 'Icons/Page/logo.png')" label="Sub Navigation">
<!-- Insert fields, sheets, grid, form section objects etc. here, in this flux:form tag -->
</flux:form>
<flux:grid>
<!-- Edit this grid to change the "backend layout" structure -->
<flux:grid.row>
<flux:grid.column colPos="0" colspan="4" name="main" label="Navigation wrapper" />
</flux:grid.row>
<flux:grid.row>
<flux:grid.column colPos="1" colspan="4" name="main" label="Main wrapper" />
</flux:grid.row>
</flux:grid>
</f:section>
<f:section name="Main">
<div class="sub_nav">
<div class="container">
<v:content.render column="0"/>
</div>
</div>
<div class="container">
<v:content.render column="1"/>
</div>
</f:section>
【问题讨论】:
如果你想要一个页面的后端布局,一般情况下你可以从 $GLOBALS['TSFE'] 数组中获取。但这里是关于通量的,对吧??但是在模板提供程序扩展中是否需要知道选择的后端布局。?请更准确地解释您的要求。 @AnuBhuvanendranNair 我需要流体通量模板中的模板名称。由于我使用提供程序扩展,我不能使用 $GLOBALS['TSFE'] 数组 【参考方案1】:这取决于“布局名称”的确切含义:
如果您指的是每个单独页面的pages
表的字段,那么当您在 v:page.menu
中迭代时,这些字段将在每条记录中可用(例如,tx_fed_page_controller_action
)。
如果您指的是 pages
的字段,而且当这个变量被继承时(例如,backend_layout
和 tx_fed_page_controller_action
也是,但每个都通过不同的方法)它变得更加复杂:您需要步行通过根行并使用第一个非空值。为此,v:page.rootLine
加上v:iterator.filter
加上v:iterator.first
可以提供很大帮助(将根行的输出放入过滤器以删除非空值,然后使用first
VH 从过滤结果中选择第一个值) .
如果您在页面模板的 Flux 表单字段中定义此“布局”,它将成为您可以使用 flux:form.data
读取的 FlexForm 变量(如果未禁用并且模板通过根行匹配,则具有继承)。李>
根据您的确切意思,有很多可能的解决方案。如果您还在寻找关于使用哪个有意义的建议:很可能您的意思是您在页面属性中选择的布局(无论字段如何),为此,v:page.rootLine
plus v:iterator.filter
plus v:iterator.first
是从当前页面的根行“滑动选择”任何非空值的好方法和通用方法。
【讨论】:
我从 _all.sections 获得了 tx_fed_page_controller_action。谢谢您的帮助【参考方案2】:你可以用流体中的变量来获取它
lib.templateName = TEXT
lib.templateName.stdWrap.cObject = CASE
lib.templateName.stdWrap
cObject = TEXT
cObject
data = levelfield:-2,backend_layout_next_level,slide
override.field = backend_layout
split
token = pagets__
1.current = 1
1.wrap = |
ifEmpty = Default
page = PAGE
page.10 = FLUIDTEMPLATE
page.10
#...
variables.templateName < lib.templateName
【讨论】:
我试过这个方法。但是没有得到模板名。我试过以上是关于在前端获取布局名称 - 流畅的错字3的主要内容,如果未能解决你的问题,请参考以下文章