在前端获取布局名称 - 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_layouttx_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" 任何非空值。