为页面树定义前端布局

Posted

技术标签:

【中文标题】为页面树定义前端布局【英文标题】: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 提供您的意见或建议 ..

【问题讨论】:

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

以上是关于为页面树定义前端布局的主要内容,如果未能解决你的问题,请参考以下文章

WEB前端怎么布局?

使用Bootstrap前端框架的栅格系统搭建页面布局

前端布局---盒子模型

前端面试题系列之-CSS及页面布局篇

前端布局的几种方式

前端页面中几种常用的flex布局