【问题标题】:define Frontend Layouts for page trees为页面树定义前端布局
【发布时间】:2016-10-18 02:30:33
【问题描述】:

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

所以我正在使用:

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

} ### TCEFORM

在我的FLUIDTEMPLATE,我将包装一个<div>-wrapper,以便在我的样式表中全局设置我的不同语言。 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')}">
...

这对我来说很完美。 但是如何将前端布局信息从父页面滑动(或继承)到页面树上的子页面?如果我将新页面添加到我的页面树中,我不想每次都在页面属性中选择前端布局。这必须自动工作。这可能吗? 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 提供您的意见或建议 ..

【问题讨论】:

  • 我不确定您是否可以递归地设置该布局。为了解决您的问题,我将创建四个不同的页面模板,您可以轻松配置它们以用于子页面。
  • 你是指四种不同的后端布局吗?然后您可以为父页面和子页面选择后端布局。我想过,但尝试使用前端布局。也许使用后端布局(流体)会更好。感谢您的建议。
  • 这正是我的意思。我喜欢内容元素中非常具体的条件的布局选择。

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


【解决方案1】:

我遇到了同样的问题,这个打字稿对我来说很好用, 结果就是你想要达到的。

如您所见,页面上设置前端布局时使用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-|
            }
        }
    }
}

希望我对你有所帮助。

【讨论】:

  • 这很棒。我修改了这项技术以将布局输出到lib.pageLayout,然后使用流体条件进行检查。
【解决方案2】:

我认为在不操作数据库的情况下递归设置{data.layout} 布局并不简单。我想到了三个“解决方案”来解决您的问题:

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

2) 使用您的布局模式,您可以尝试使用这样的打字稿设置正文类(我没有对此进行测试):

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

3) 使用类似的排版,但使用诸如[pidInRootline] 之类的排版条件更新值

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

【讨论】:

  • 嗨,这是一个完整的答案。非常感谢您。我通过错字条件和 PIDinRootline 忘记了解决方案。
猜你喜欢
  • 1970-01-01
  • 2012-04-12
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多