为页面树定义前端布局
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 忘记了解决方案。以上是关于为页面树定义前端布局的主要内容,如果未能解决你的问题,请参考以下文章