2013-10-29 2 views
0

저는 fedext.net 세트의 도구를 사용하여 TYPO3 6.1 및 유체 템플릿으로 작업하고 있습니다. 메뉴와 같은 자동 생성 된 콘텐츠가 포함 된 헤더와 저작권처럼 관리자가 정의한 일부 콘텐츠가 필요합니다. 이것을 TYPO3 백엔드의 일반적인 장소에서 정의하는 것이 이치에 맞습니다. 여기 TYPO3 유체 : 바닥 글과 머리글을 설정하는 가장 좋은 방법은 무엇입니까?

lib.my_custom_header = COA 
lib.my_custom_header { 
    10 = CONTENT 
    10 { 
     table = tt_content 
     select.where = colPos = 0 
     select.languageField = sys_language_uid 
     select.orderBy = sorting 
     select.pidInList = {$config.my_site.header_page_id} 
    } 
    20 = CONTENT 
    20 { 
     table = tt_content 
     select.where = colPos = 1 
     select.languageField = sys_language_uid 
     select.orderBy = sorting 
     select.pidInList = {$config.my_site.header_page_id} 
    } 
} 

내 FooterPage 유체 템플릿입니다 :
{namespace v=Tx_Vhs_ViewHelpers} 
<f:layout name="Page"/> 
<div xmlns="http://www.w3.org/1999/xhtml" lang="en" 
    xmlns:v="http://fedext.net/ns/vhs/ViewHelpers" 
    xmlns:f="http://fedext.net/ns/fluid/ViewHelpers"> 

    <div class="grid-container"> 
     <f:cObject typoscriptObjectPath="lib.my_custom_header" /> 

     <f:render section="Content"/> 

     <f:cObject typoscriptObjectPath="lib.my_custom_footer" /> 
    </div> 
</div> 

그리고

가 Typoscript에서 나는 헤더의 컨텐츠를 잡아 렌더링하기 위해 다음과 같은 일을 해요 :

현재이 같은 페이지 레이아웃을

{namespace v=Tx_Vhs_ViewHelpers} 
{namespace flux=Tx_Flux_ViewHelpers} 
<f:layout name="Page"/> 
<div xmlns="http://www.w3.org/1999/xhtml" lang="en" 
    xmlns:v="http://fedext.net/ns/vhs/ViewHelpers" 
    xmlns:flux="http://fedext.net/ns/flux/ViewHelpers" 
    xmlns:f="http://fedext.net/ns/fluid/ViewHelpers"> 

    <f:section name="Configuration"> 

     <flux:flexform id="mypageheader" label="Page Header"> 

      <!-- Grid displayed in the page module --> 
      <flux:flexform.grid> 
       <flux:flexform.grid.row> 
        <flux:flexform.grid.column colPos="0" name="Header Logo" /> 
        <flux:flexform.grid.column colPos="1" name="Header Links" /> 
       </flux:flexform.grid.row> 
      </flux:flexform.grid> 
     </flux:flexform> 
    </f:section> 

    <f:section name="Resources"></f:section> 

    <f:section name="Content"> 
     <div class="grid-100 mobile-grid-100 grid-parent header"> 
      <v:page.content.render column="0"/> 
      <v:page.content.render column="1"/> 
     </div> 
    </f:section> 
</div> 

바닥 글 코드는 거의 동일합니다 (변수 이름 제외). 이 접근법은 작동하지만 머리글과 바닥 글은 페이지에서 나옵니다. 꼬리말 페이지에서만 내용 요소를 렌더링 할 수 있기 때문에 전체 페이지가 아닙니다. 따라서 내 머리글/바닥 글 데이터에 대한 일부 사용자 지정 래퍼를 지정할 수 없습니다.

또는 TypoScript 내에 래퍼를 정의 할 수도 있지만이 방법은 typoscript 코드에 헤더 템플릿 코드를 분산시킵니다. 또한 페이지 레이아웃 파일에서 정의 할 수도 있지만 (위 참조) 그런 경우에도 헤더/푸터 유체 페이지 템플릿 내부에 배치하려는 나머지 헤더 템플릿 코드와 구분됩니다.

가장 좋은 방법은?

P. 이 샘플 프로젝트에서 http://bootstrap.typo3cms.demo.typo3.org/ 바닥 글은 공유 된 백엔드 요소에서 이동하도록 구성되어 있지만 TYPO3 백엔드에서 해당 요소를 열 수 없습니다. 열려고하면 TYPO3에서 빈 화면이 표시됩니다. 해당 프로젝트의 로컬 사본에서도 마찬가지입니다.

+0

TS를'20 < '으로 최적화 할 수 있습니다.10' –

+0

@Fedir 그 후에'colPos' 차이점을 무시하는 법? –

+0

'20.select.where = colPos = 1' –

답변

0

나는 혼자 해결책을 찾았음에도 불구하고, 나는 여전히 더 나은 사람을 위해 열려 있습니다. 이 스레드에 새로운 대답을 자유롭게 추가 할 수 있으면 투표를 통해 더 나은 접근 방식을 알 수 있습니다.

<f:section name="Header"> 
    <div id="header" class="some"> 
     <div class="custom"> 
      <div class="wrappers"> 
       <f:cObject typoscriptObjectPath="lib.my_header_links" /> 
      </div> 
     </div> 
     <div class="more"> 
      <div class="wrappers"> 
       <f:cObject typoscriptObjectPath="lib.my_main_menu" /> 
      </div> 
      <div class="one-more"> 
       <f:cObject typoscriptObjectPath="lib.my_header_logo" /> 
      </div> 
     </div> 
    </div> 
</f:section> 

가 그럼 난 숨겨진 백엔드 페이지에 대한 특별한 템플릿을 생성 :

내가 이런 전체 헤더 레이아웃 렌더링 할 부분을 정의 : 이하 나의 현재 솔루션입니다

<f:section name="Configuration"> 
    <flux:flexform id="myPageHeader" label="My Page Header"> 

     <!-- Grid displayed in the page module --> 
     <flux:flexform.grid> 
      <flux:flexform.grid.row> 
       <flux:flexform.grid.column colPos="0" name="Header Links" /> 
       <flux:flexform.grid.column colPos="1" name="Header Logo" /> 
      </flux:flexform.grid.row> 
     </flux:flexform.grid> 
    </flux:flexform> 
</f:section> 

<f:section name="Content"> 
    <f:render partial="Header" section="Header" /> 
</f:section> 

을 그리고 백엔드에서 숨겨진 페이지를 만들었습니다. 모양 설정에서 위에 템플릿이 할당되어 있습니다.

그럼 내 TypoScript에서

:

lib.my_header_links = CONTENT 
lib.my_header_links { 
    table = tt_content 
    select.where = colPos = 0 
    select.languageField = sys_language_uid 
    select.orderBy = sorting 
    select.pidInList = #here goes my hidden page id, which feeds the content for header 
} 
lib.my_header_logo < lib.my_header_links 
lib.my_header_logo { 
    select.where = colPos = 1 
} 
lib.my_main_menu = HMENU 
lib.my_main_menu { 
    # here goes main menu config 
} 

을 마지막으로 나는 헤더 부분 렌더링 할 수있는 페이지 템플릿을 수정합니다.

<f:section name="Content"> 
    <f:render partial="Header" section="Header" /> 

    <div id="content"> 
     <v:page.content.render column="0" /> 
    </div> 
</f:section> 

지금 내 백엔드 사용자가 백엔드의 헤더 페이지 헤더의 컨텐츠를 사용자 정의 할 수 있으며,이 내용이 사용하는 모든 페이지에 채워되고있다 :이 템플릿은 사이트의 콘텐츠를 렌더링하는 모든 일반 페이지에 할당 할 예정이다 내 페이지 템플릿. 이 솔루션은 약간 복잡하지만 백엔드 사용자에게 향상된 유연성을 제공합니다.