如何让前端布局确定列和后端布局?

问题描述:

有没有办法让前端布局确定后端布局,模板文件和列?如何让前端布局确定列和后端布局?

目前我有以下代码,允许您设置后端布局,并使用适当的模板文件。但是,当每个布局有不同的列位置时,这会变得非常混乱。

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

而不凌乱可言,这里有一个真实的例子:

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