为页面树定义前端布局
define Frontend Layouts for page trees
我在 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')}">
...
这非常适合我。
但是我怎样才能将 frontend-layout-info 从我的父页面滑动(或继承)到我的 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
...
请参考您的意见或提示..
我认为在不操作数据库的情况下递归设置 {data.layout}
布局并不简单。我想到了三个 'solutions' 来解决您的问题:
1) 创建四个后端布局,您可以 select 用于当前页面和子页面。 (基本上冲洗并重复你为第一个后端布局所做的事情)
2) 使用您的布局模式,您可以尝试像这样使用拼写错误设置正文 class(我没有对此进行测试):
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
我遇到了同样的问题,这个错字对我来说很好用,
结果就是您想要达到的结果。
如你所见,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-|
}
}
}
}
希望对您有所帮助。
我在 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')}">
...
这非常适合我。
但是我怎样才能将 frontend-layout-info 从我的父页面滑动(或继承)到我的 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
...
请参考您的意见或提示..
我认为在不操作数据库的情况下递归设置 {data.layout}
布局并不简单。我想到了三个 'solutions' 来解决您的问题:
1) 创建四个后端布局,您可以 select 用于当前页面和子页面。 (基本上冲洗并重复你为第一个后端布局所做的事情)
2) 使用您的布局模式,您可以尝试像这样使用拼写错误设置正文 class(我没有对此进行测试):
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
我遇到了同样的问题,这个错字对我来说很好用, 结果就是您想要达到的结果。
如你所见,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-|
}
}
}
}
希望对您有所帮助。