为页面树定义前端布局

时间:2016-06-16 14:00:19

标签: layout typo3 slide typoscript typo3-7.6.x

我正在Frontend-Layout - 后端使用字段TYPO3 7.6。因为我的网站将在前端有四个不同颜色的不同部门。

pages frontend choose layout

所以我正在使用:

TCEFORM {
    pages {
        layout {
            altLabels {
                0 =  [ blue]
                1 =  [ orange ]
                2 =  [ green]
                3 =  [ yellow]
            }
        }
    }

} ### TCEFORM

在我的FLUIDTEMPLATE我将包装<div> - 包装器,在我的样式表中全局设置不同的语言。 F.E. div.wrap.blue { background-color:blue;}

<div class="wrap 
{f:if(condition:'{data.layout} == 0',then:'blue')}
{f:if(condition:'{data.layout} == 1',then:'orange')}
{f:if(condition:'{data.layout} == 2',then:'green')}
{f:if(condition:'{data.layout} == 3',then:'yellow')}">
...

这对我来说很完美。 但是,如何将父页面中的前端布局信息滑动(或继承)到我的pagetree上的子页面?如果我要在页面树中添加新页面,我不希望每次都在页面属性中选择前端布局。这必须自动运行。这可能吗?使用slide

例如

*ROOT
  + parent blue
    ~~ sub blue 1 /* these pages also have frontend layout 0 */
    ~~ sub blue 2
  + parent orange
    ~~ sub orange 1
  + parent green
    ...
  + parent yellow
  ...

Thebks的意见或建议......

2 个答案:

答案 0 :(得分:1)

我不认为在不操纵数据库的情况下递归设置{data.layout}布局非常简单。我有三个解决方案&#39;想到解决你的问题:

1)创建四个后端布局,您可以为当前页面和子页面选择。 (基本上冲洗并重复你为第一个后端布局所做的事情)

2)使用你的布局模式你可以尝试使用typoscript设置一个body类(我没有测试过):

page.bodyTag >
page.bodyTagCObject = TEXT
page.bodyTagCObject.field = data.layout
page.bodyTagCObject.wrap = <body class="color-|"> 

3)使用类似的typoscript但使用诸如[pidInRootline]

之类的typoscript条件更新值
page.bodyTag >
page.bodyTagCObject = TEXT
page.bodyTagCObject.wrap = <body class="blue">

[PIDinRootline = 1]
page.bodyTagCObject.wrap = <body class="orange">
[global]

[PIDinRootline = 2]
page.bodyTagCObject.wrap = <body class="green">
[global]
# and so on

答案 1 :(得分:0)

我有同样的问题,这个typoscript对我很好, 结果就是你想要达到的目标。

正如您所见,在页面上设置前端布局时使用 20.10 对象,而在未设置前端布局时使用 20.20 对象并将其接受在幻灯片模式下:

page {
    bodyTagCObject >
    bodyTagCObject = COA
    bodyTagCObject {
        stdWrap.noTrimWrap = |<body |>|
        20 = COA
        20 {
            wrap = class="|"
            10 = TEXT
            10 {
              if.isTrue.data = page:layout
              data = page:layout
              noTrimWrap = |page-layout-| |
            }
            20 = TEXT
            20 {
             if.isFalse.data = page:layout
             data = levelfield:-2, layout, slide
             noTrimWrap = |page-layout-|
            }
        }
    }
}

我希望自己有所帮助。