在前端获取布局名称 - 流畅的错字3

Posted

技术标签:

【中文标题】在前端获取布局名称 - 流畅的错字3【英文标题】:Get layout name in front end - fluid typo3 【发布时间】:2017-02-11 10:08:40 【问题描述】:

我有一个单页布局的流畅的typo3网站。一个菜单有不同的布局。如何在我的主模板中获取选定的布局名称?

ma​​in.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_layouttx_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_pa​​ge_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

【讨论】:

我试过这个方法。但是没有得到模板名。我试过 因为您不在页面上下文中使用它,所以打字稿的数据对象可能会有所不同。因此,您可能需要先从数据对象中获取页面对象,然后再访问 backend_layout 字段。

以上是关于在前端获取布局名称 - 流畅的错字3的主要内容,如果未能解决你的问题,请参考以下文章

是否可以从布局中获取视图名称?

是否可以在 Laravel (4) 刀片模板中获取视图/布局名称

在验证器中获取设置 - 错字3

前端实现上传文件夹与文件夹名称的获取

无法编辑 SQLite 数据库名称

推荐20个非常有帮助的web前端开发教程