在前端获取布局名称 - fluid typo3
Get layout name in front end - fluid typo3
我有一个流畅的单页错别字网站 layout.One 菜单有不同 layout.How 以在我的主模板中获取选定的布局名称?
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>
可以通过fluid中的变量获取
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
}
这取决于你所说的 "Layout name":
- 如果您指的是每个单独页面的
pages
table 字段,那么当您在 v:page.menu
中迭代它时,这些字段将在每个记录中可用(例如,tx_fed_page_controller_action
).
- 如果你指的是
pages
的字段,而且当这个变量被继承时(例如,backend_layout
和 tx_fed_page_controller_action
也是,但每个通过不同的方法)它变成更复杂:您需要遍历根行并使用第一个非空值。为此,v:page.rootLine
plus v:iterator.filter
plus v:iterator.first
会有很大帮助(将根行的输出放入过滤器以删除非空值,然后使用 first
VH 到 select 该过滤结果的第一个值)。
- 如果您在页面模板的 Flux 表单字段中定义此 "layout",它将变成一个 FlexForm 变量,您可以使用
flux:form.data
读取它(如果未禁用且模板匹配,则继承根线)。
根据您的意思,有很多可能的解决方案。如果您也在寻找关于使用哪个有意义的建议:很可能您指的是您在页面属性(无论字段如何)中 select 的布局,为此,v:page.rootLine
加上 v:iterator.filter
加上 v:iterator.first
是一个很好的通用方法,可以从当前页面的根行 "slide select" 任何非空值。
我有一个流畅的单页错别字网站 layout.One 菜单有不同 layout.How 以在我的主模板中获取选定的布局名称?
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>
可以通过fluid中的变量获取
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
}
这取决于你所说的 "Layout name":
- 如果您指的是每个单独页面的
pages
table 字段,那么当您在v:page.menu
中迭代它时,这些字段将在每个记录中可用(例如,tx_fed_page_controller_action
). - 如果你指的是
pages
的字段,而且当这个变量被继承时(例如,backend_layout
和tx_fed_page_controller_action
也是,但每个通过不同的方法)它变成更复杂:您需要遍历根行并使用第一个非空值。为此,v:page.rootLine
plusv:iterator.filter
plusv:iterator.first
会有很大帮助(将根行的输出放入过滤器以删除非空值,然后使用first
VH 到 select 该过滤结果的第一个值)。 - 如果您在页面模板的 Flux 表单字段中定义此 "layout",它将变成一个 FlexForm 变量,您可以使用
flux:form.data
读取它(如果未禁用且模板匹配,则继承根线)。
根据您的意思,有很多可能的解决方案。如果您也在寻找关于使用哪个有意义的建议:很可能您指的是您在页面属性(无论字段如何)中 select 的布局,为此,v:page.rootLine
加上 v:iterator.filter
加上 v:iterator.first
是一个很好的通用方法,可以从当前页面的根行 "slide select" 任何非空值。