2016-10-03 14 views
0

단일 페이지 레이아웃이있는 유동적 인 오타 3 사이트가 있습니다. 하나의 메뉴에는 다른 레이아웃이 있습니다. 기본 템플릿에서 선택한 레이아웃 이름을 얻는 방법은 무엇입니까?프론트 엔드에서 레이아웃 이름 가져 오기 - 유체 오타 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)으로 반복 할 때 각 레코드에서 사용할 수 있습니다.
  • 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 더하기 v:iterator.filter 더하기 v:iterator.first은 " 슬라이드 선택 "현재 페이지의 루트 줄에서 비어 있지 않은 값을 선택하십시오.

+0

{_all.sections}에서 tx_fed_page_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 필드에 액세스해야 할 수 있습니다. –