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

时间:2016-10-03 12:46:24

标签: typo3 flux fluid-layout extbase

我有一个流动的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>

2 个答案:

答案 0 :(得分:2)

取决于您的确切含义&#34;布局名称&#34;:

  • 如果您指的是每个页面pages表的字段,那么当您在v:page.menu中对其进行迭代时,这些字段将在每个记录中可用(例如,tx_fed_page_controller_action)。
  • 如果你的意思是pages的字段,而且当这个变量被继承时(例如,backend_layout是和tx_fed_page_controller_action也是,但每个都通过不同的方法)它变得更复杂:您需要遍历根线并使用第一个非空值。为此,v:page.rootLinev:iterator.filterv:iterator.first可以提供很大的帮助(将根行的输出放入过滤器以删除非空值,然后使用first VH进行选择过滤结果的第一个值。)。
  • 如果你定义这个&#34;布局&#34;在页面模板的Flux表单字段中,它变为FlexForm变量,您可以使用flux:form.data读取该文件(如果未禁用,则继承,如果模板通过根行匹配)。

根据您的具体含义,有很多可能的解决方案。如果您还在寻找有关哪一个有意义的建议:很可能您指的是在页面属性中选择的布局(无论字段如何),为此,v:page.rootLinev:iterator.filter加{ {1}}是一个很好的通用方法,可以选择&#34;幻灯片选择&#34;来自当前页面根行的任何非空值。

答案 1 :(得分:1)

你可以使用流体中的变量来获取它

DECLARE @XMLData XML = 
'<JournalEntry xmlns="http://schema.mycompany.com/Info/2">
<JELine sequence="1">
<Amount currencyID="USD">-100.000</Amount>
<FunctionalAmount currencyID="USD">-100.000</FunctionalAmount>
<ReportingCurrencyAmount     currencyID="USD">100.000</ReportingCurrencyAmount>
<GLAccount>
    <GLNominalAccount>1005690</GLNominalAccount>
    <AccountingChartReference>
        <ID accountingEntity="T00">T00</ID>
    </AccountingChartReference>
</GLAccount>
</JELine>
<JELine sequence="2">
<Amount currencyID="USD">100.000</Amount>
<FunctionalAmount currencyID="USD">100.000</FunctionalAmount>
<ReportingCurrencyAmount     currencyID="USD">100.000</ReportingCurrencyAmount>
<GLAccount>
    <GLNominalAccount>34180050</GLNominalAccount>
    <AccountingChartReference>
        <ID accountingEntity="T00">T00</ID>
    </AccountingChartReference>
</GLAccount>
</JELine>
</JournalEntry>';

WITH XMLNAMESPACES(DEFAULT 'http://schema.mycompany.com/Info/2')
SELECT ParamValues.SSD.value('GLNominalAccount[1]', 'varchar(8)') 
FROM @xmlData.nodes('JournalEntry/JELine/GLAccount') AS ParamValues(SSD) -- dont need the "//"
WHERE ParamValues.SSD.value('GLNominalAccount[1]', 'varchar(8)') LIKE '[2-46-8]%' -- simplier WHERE clause