如何查询由 parent 页面设置的后端布局?

How do I query a backend layout which is set by parent page?

目前我正在使用以下条件 TypoScript 来检查设置了哪个后端布局:

[globalVar = TSFE:page|backend_layout = 2]
  // some typoscript
[global]

此外我还有一个这样的站点树结构:

- rootPage1
    - page1
    - page2
    - page3
- rootPage2
    - page1
    - page2

现在我想为 rootPage2 和该页面的所有子页面使用不同的后端布局。所以我将这个页面配置如下:

这按预期工作并为 rootPage2 及其所有子项设置了不同的后端布局,但条件语句不适用于他的子项。只有当我手动为所有这些孩子设置后端布局时它才有效:(.

为此我需要不同的条件语句吗?

是的,你需要使用不同的条件,具体写你自己的userFunc condition

将此代码放入您的 typo3conf/AdditionalConfiguration.php(就在这个地方,必要时创建文件):

function user_beLayout($layout) {

    if (TYPO3_MODE!='FE') return false;

    if($GLOBALS["TSFE"]->page["backend_layout"] > 0)
        return $GLOBALS["TSFE"]->page["backend_layout"] == $layout;

    foreach ($GLOBALS["TSFE"]->rootLine as $page)
        if($page["backend_layout_next_level"] > 0) 
            return ($page["backend_layout_next_level"] == $layout);

    return false;
}

因此您可以在您的 TS 中使用它,例如:

[userFunc = user_beLayout(2)]
 // some typoscript
[end]

这是 link 到 gist with comments