2016-10-03 6 views
0

私は流体のtypo3サイトを1ページレイアウトで持っています.1つのメニューにはレイアウトが異なります。メインテンプレートで選択されたレイアウト名を取得する方法は?フロントエンドでレイアウト名を取得する - 流体タイプ3

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)でそれを反復処理するとき0
  • は、それらは、各レコードに利用できるようになります。
  • pagesのフィールドを意味する場合は、この変数が継承されている場合も同様です(たとえば、backend_layouttx_fed_page_controller_actionですが、それぞれ異なるメソッドを使用しています)、それはより複雑になります。ルートラインを通る必要があります。最初の空でない値そのためには、v:page.rootLinev:iterator.filterv:iterator.firstの間の空白の値を取り除くためにフィルタに根の行からの出力を入れてから、first VHを使用してフィルタリングした結果から選択してください)。
  • ページテンプレートの[Fluxフォーム]フィールドにこの「レイアウト」を定義すると、flux:form.dataで読み込めるFlexForm変数になります(無効でない場合は継承、根元から一致するテンプレート)。

正確には、いくつかの解決策が考えられます。ページのプロパティ(フィールドに関係なく)で選択したレイアウトを意味する可能性が最も高いので、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

を使ってみましたが、このメソッドを試しました。私は

+1

を試してみましたが、これはページコンテキストで使用しないため、typoscriptのデータオブジェクトが異なる場合があります。最初にデータオブジェクトからページオブジェクトを取得し、backend_layoutフィールドにアクセスする必要があります。 –

関連する問題