2016-10-03 51 views
0

我有一個流體TYPO3網站與單頁layout.One菜單有不同的layout.How在我的主模板獲取所選佈局的名字嗎?獲取佈局的名字 - 流體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> 
+1

如果你想有一個頁面的佈局後端,在正常情況下,你可以從$ GLOBALS [「TSFE」]數組獲得它。 但這裏是關於Flux的,對嗎?但是在模板提供者擴展中,需要知道選擇的後端佈局。請更準確地解釋你的要求。 –

+0

@AnuBhuvanendranNair我需要流體通量模板中的模板名稱。因爲即時通訊使用提供商擴展我不能使用$ GLOBALS ['TSFE']數組 –

回答

2

這取決於究竟你的意思是一個變量得到它「佈局名稱」:

  • 如果你指的是pages表爲每個頁面的字段那麼這些將在每一個記錄,當你在v:page.menu迭代它(例如,tx_fed_page_controller_action)。
  • 如果您的意思是pages的字段,但同時也是該變量被繼承的時候(例如,backend_layout是和tx_fed_page_controller_action也是,但每個都通過不同的方法),它變得更加複雜:您需要遍歷根行並使用第一個非空值。爲此,v:page.rootLinev:iterator.filterv:iterator.first可以有很大的幫助(將根輸出從濾波器輸出到濾波器中去除非空值,然後使用VH從濾波結果中選擇第一個值)。
  • 如果你定義在你的頁面模板中的助熔劑表單字段這種「佈局」就變成了柔性成型變量,你可以用flux:form.data閱讀(具有繼承,如果不禁止,如果模板通過根線匹配)。

取決於到底是哪你的意思是有相當多的可能的解決方案。如果你也在尋找關於哪一個很有意義的使用建議:最有可能你指的是佈局選擇在頁面屬性(不管場),爲此,v:page.rootLinev:iterator.filterv:iterator.first是一個很好的和通用的方法來「請從當前頁面的根目錄中選擇「任何非空值」。

+0

我從{_all.sections}獲得了tx_fed_pa​​ge_controller_action。感謝您的幫助 –

1

您可以在流體

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 
} 
+0

我試過這種方法。但沒有得到templatename。我試圖

+1

如你不頁上下文中的TypoScript的數據對象可以改變使用它。因此您可能需要首先從數據對象中獲取頁面對象,然後訪問backend_layout字段。 –