2016-05-17 78 views
1

有沒有辦法讓前端佈局確定後端佈局,模板文件和列?如何讓前端佈局確定列和後端佈局?

目前我有以下代碼,允許您設置後端佈局,並使用適當的模板文件。但是,當每個佈局有不同的列位置時,這會變得非常混亂。

page.10 = FLUIDTEMPLATE 
page.10 { 
    #format = html 
    file= fileadmin/templates/example/partials/example_home.html  
    partialRootPath = fileadmin/templates/example/partials/ 
    layoutRootPath = fileadmin/templates/example/layouts/ 
    variables { 

     # Assign the Columns 
     main < styles.content.get 
     main.select.where = colPos = 0 

     news < styles.content.get 
     news.select.where = colPos = 1 
     } 
    } 
} 


# Assign the Template files with the Fluid Backend-Template 
page.10.file.stdWrap.cObject = CASE 
page.10.file.stdWrap.cObject { 
    key.data = levelfield:-1, backend_layout_next_level, slide 
    key.override.field = backend_layout 

    # Set the default Template 
    default = TEXT 
    default.value = fileadmin/templates/example/partials/example_home.html 

    # Set a second Template 
    23 = TEXT 
    23.value = fileadmin/templates/example/partials/example_internal.html 


} 
+0

你的問題不是很清楚。您正在使用backend_layout。每個backend_layout可以在FE中擁有自己的演示文稿。 FE佈局爲什麼要確定BE的外觀?我的意思是,通常情況是這樣。您選擇您的佈局佈局,它確定列,併爲此準備FE視圖。在流體中有「佈局」用於這個,所以你可以從模板中選取不同的部分。 –

+0

@AndrásOttó好的,如果我們忘記了前端佈局部分,那麼如何根據選擇的後端佈局來設置不同的colPos? – user500665

+0

@AndrásOttó另外,如果您有兩個使用相同後端佈局的不同模板,您會怎麼做? – user500665

回答

2

而不凌亂可言,這裏有一個真實的例子:

page.10 = FLUIDTEMPLATE 
page.10 { 
    file.stdWrap.cObject = CASE 
    file.stdWrap.cObject { 
    key.data = pagelayout 

    default = TEXT 
    default.value = {$customPagesTemplatePath}/Standard.html 

    1 = TEXT 
    1.value = {$customPagesTemplatePath}/Home.html 

    2 = TEXT 
    2.value = {$customPagesTemplatePath}/Landing.html 

    10 = TEXT 
    10.value = {$customPagesTemplatePath}/NewsDetail.html 

    11 = TEXT 
    11.value = {$customPagesTemplatePath}/LandingMini.html 

    12 = TEXT 
    12.value = {$customPagesTemplatePath}/FullWidth.html 
    } 
    layoutRootPath = {$customPagesLayoutPath} 
    partialRootPath = {$customPagesPartialPath} 

} 

想想看這樣的:

  • 正如你所說的,忘了前端佈局。這是遺產;爲BE和FE服務。

  • 如果一個頁面是一個城市,colPos將是街道。或者說,想象一下後端是一張你正在繪製的地圖,前端是你根據該地圖製作的樂高城:-)如果沒關係,我會堅持這個比喻。

ColPos是記錄所在頁面的確定部分。如果可以,請查看數據庫中的tt_content表格:您會看到colPos只是一個包含數字的列。因此,在城市「第1頁」中,有一條名爲「colPos 7」的街道,它包含一些記錄(那些將是房屋)。通過TYPO3中的be_layout嚮導,您可以創建該城市的管理地圖:編輯應該如何看到這些街道。

FLUIDTEMPLATE中,根據所選的be_layout調用,您將創建城市本身;呈現的前端。

下面是這種流體模板(Home.html中)另一個現實世界的例子:

<f:render partial="Mobilenav" /> 
<f:render partial="Header"/> 

<div class="row"> 
<f:cObject typoscriptObjectPath="lib.home-teaser" /> 
</div> 

<aside> 
    <div class="row"> 
    <div class="columns"> 
     <div class="row"> 
     <div class="fp-teaser-outer small-48 medium-24 large-12 columns"> 
      <div class="fp-teaser-box-wrapper"> 
      <f:cObject typoscriptObjectPath="lib.home-something" /> 
      </div> 
     </div> 
     <div class="fp-teaser-outer small-48 medium-24 large-12 columns"> 
      <div class="fp-teaser-box-wrapper"> 
      <f:cObject typoscriptObjectPath="lib.home-somethingelse" /> 
      </div> 
     </div> 
     <div class="fp-teaser-outer small-48 medium-24 large-12 columns"> 
      <div class="fp-teaser-box-wrapper"> 
      <div class="fp-teaser-box"> 
       <f:cObject typoscriptObjectPath="lib.home-news-plugin-title" /> 
       <div class="fp-teaser-hr"></div> 
       <div class="fp-teaser-content"> 
       <f:cObject typoscriptObjectPath="lib.home-news" /> 
       </div> 
      </div> 
      </div> 
     </div> 
     <div class="fp-teaser-outer small-48 medium-24 large-12 columns"> 
      <div class="fp-teaser-box-wrapper"> 
      <div class="fp-teaser-box"> 
       <f:cObject typoscriptObjectPath="lib.home-blog-plugin-title" /> 
       <div class="fp-teaser-hr"></div> 
       <div class="fp-teaser-content"> 
       <f:cObject typoscriptObjectPath="lib.home-blog" /> 
       </div> 
      </div> 
      </div> 
     </div> 
     </div> 
    </div> 
    </div> 
</aside> 

<f:render partial="Footer"/> 

...好了,哪來的與colPos的關係? 沒有!我(雖然是積極的,也有其他方法)爲此在Typo腳本:

lib.home-something < styles.content.get 
lib.home-something { 
    select.where = colPos = 7 
} 

因此,通過這一點,我們準備了流體的模板內容:獲取頁的第7列的所有內容(使用擴展fluid_styled_content),並把它變成一個「lib」內容對象。

那然後通過f:cObject視圖助手插入到頁面:

<f:cObject typoscriptObjectPath="lib.home-something" /> 

與此類似,在第七大街所有的房子都放到城市正是這個位置 - 從而在你的頁面呈現。

+0

我對此有兩個問題:1)你可以在一個佈局中將colPos 7中的「家庭 - 某事」,而另一個佈局中的colPos 6? 2)如果您有2個共享相同BE佈局的流體模板,您會做什麼? – user500665

+0

1)這只是命名 - 是的。你可以隨心所欲地設置它。你不能做的是在兩個不同的地方有相同的內容元素/記錄。因爲你不能在第六街和第七街擁有同一棟房子。不過,你可以在兩條街道上放兩個相同的房子。或者,因爲它正在計算,將你的房子從第6街鏡到第7街 – Urs

+0

2)模板只是說明內容是如何呈現的。您可以根據需要製作相同內容的多個模板。你的情況可能是你想在某些情況下將一個模板應用到一個頁面,但在另一些情況下又是另一個模板?你不知道如何傳遞這些信息(使用哪個模板)?好吧,你必須在你的TypoScript中引入更多的邏輯;例如「如果設置了GET參數,則選擇這個不同的BE佈局」。我建議爲此設置一個單獨的問題。 – Urs