TYPO3 8.7.8 限制后端布局列中的可用内容元素

TYPO3 8.7.8 restrict available content-elements in backend-layout column

我一直在搜索,但还没有找到有用的东西...

TYPO3 8.7.8

root           - backend-layout ("Main") for this and all subpages   (id=1)
|
 - home        - backend-layout ("Home") for this page only          (id=2)
|
 - subpage     - same backend-layout as root                         (id=3)

两个后端布局看起来一样:

________________________________
|             Top              |
|______________________________|
| main-content | right-content |
|______________|_______________|

顶部的名称不同,用法也不同。

"Main"-backend-layout 的顶部应该只允许图像内容元素。

cType.allowed = image

"Home"-后端布局的顶部应该只允许文本内容元素

cType.allowed = text

我试过的最后两件事是

首先:使用拼写错误中的 GlobalVars 对其进行限制

[globalVar = TSFE:id != 2]&&[globalVar = TSFE:colPos=2]
  TCEFORM.tt_content.CType.removeItems := addToList(header,text,bullets,table,uploads,multimedia,mailform,search,login,splash,menu,shortcut,list,script,div,html,media)
  TCEFORM.tt_content.CType.keepItems := addToList(image)
[end]

第二:更改数据库中布局的属性

backend_layout {
    colCount = 2
    rowCount = 2
    rows {
        1 {
            columns {
                1 {
                    name = Parallax
                    colspan = 2
                    colPos = 2
                    # The following 3 lines have been added through me
                    cType {
                        allowed = text
                    }
                }
            }
        }
        2 {
            columns {
                1 {
                    name = Content-Main
                    colPos = 0
                }
                2 {
                    name = Content-Right
                    colPos = 1
                }
            }
        }
    }
}

我已经尝试了很多其他的东西,但我不确定我是否能再次找到它们。我什至不确定这可以在 TYPO3 8.x 中完成。在打字错误中创建后端布局的选项确实受到限制。您只能为列键入名称并定义 colPos。

我是不是对 TYPO3 8.x 做错了什么,导致我的配置不起作用? 我需要不同的属性吗?或者它只是不想在这个版本的 TYPO3 中以这种方式工作?因为之前好像有用过...

我仍然是 TYPO3 的新手,非常感谢您的帮助,但请具体说明更改内容的位置,否则我会再次迷路....^^

谢谢!

尝试这样的事情:

    backend_layout {
      colCount = 2
      rowCount = 2
      rows {
        1 {
          columns {
            1 {
              name = Parallax
              colspan = 2
              colPos = 2
              allowed = text
            }
          }
        }
        2 {
          columns {
            1 {
              name = Content-Main
              colPos = 0
            }
            2 {
              name = Content-Right
              colPos = 1
            }
          }
        }
      }
    }

你走的很好,但是条件不对。

问题一:没有可用于 BE 的 TSFE。

In the "globalString" condition, key "TSFE:" will not work because the TSFE global object only exists in the FE context. The "LIT:" key will not work either as it is used to compare TypoScript constants, which are not available in the BE context.

参考:https://docs.typo3.org/typo3cms/TSconfigReference/Conditions/Index.html

您需要使用 "page" 而不是 "TSFE:page|"。它们是相等的,但 "page" 可用于前端和后端,但 "TSFE" 仅用于前端。

第二个问题是,对于 colPos,您需要访问 GP (GetPost) 助手而不是 TSFE。

所以尝试像这样改变条件:

[page|uid != 2]&&[globalVar = GP:colPos==2]
  TCEFORM.tt_content.CType.removeItems := addToList(header,text,bullets,table,uploads,multimedia,mailform,search,login,splash,menu,shortcut,list,script,div,html,media)
  TCEFORM.tt_content.CType.keepItems := addToList(image)
[end]

注意:BE布局没有CType限制,所以"cType"和"allowed"都是错误的

感谢 Joey,我找到了可以使用的扩展:Content Defender

而且我发现了如何通过 ts 添加我的 backend_layouts;在根页面的PageTS中添加如下内容

mod.web_layout.BackendLayouts {
   Home {
      title = Home
      config {
        backend_layout {
          colCount = 2
          rowCount = 2
          rows {
            1 {
              columns {
                1 {
                  name = Parallax
                  colspan = 2
                  colPos = 2
                  # allowed and disallowed only work through the extension content_defender (or gridelements)
                  allowed {
                    CType = gi_customstyler_parallax_content
                  }
                }
              }
            }
            2 {
              columns {
                1 {
                  name = Main
                  colPos = 0
                  disallowed {
                    CType = gi_customstyler_bg_image,gi_customstyler_parallax_content
                  }
                }
                2 {
                  name = Right
                  colPos = 1
                  disallowed {
                    CType = gi_customstyler_bg_image,gi_customstyler_parallax_content
                  }
                }
              }
            }
          }
        }
     }
  }
  Main {
      title = Main
      config {
        backend_layout {
          colCount = 2
          rowCount = 2
          rows {
            1 {
              columns {
                1 {
                  name = Titel-Hintergrund
                  colspan = 2
                  colPos = 2
                  allowed {
                    CType = gi_customstyler_bg_image
                  }
                }
              }
            }
            2 {
              columns {
                1 {
                  name = Main
                  colPos = 0
                  disallowed {
                    CType = gi_customstyler_bg_image,gi_customstyler_parallax_content
                  }
                }
                2 {
                  name = Right
                  colPos = 1
                  disallowed {
                    CType = gi_customstyler_bg_image,gi_customstyler_parallax_content
                  }
                }
              }
            }
          }
        }
     }
  }
}

这样,两个 backend_layouts 就可以在页面配置上使用,并带有受限内容元素的附加条件。如您所见,这也可以与自定义内容元素一起使用。

我(作为新手)花了很长时间才弄明白这一点,我希望这可能对其他人有所帮助...