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

时间:2017-11-21 15:46:08

标签: typo3 typoscript typo3-8.x typo3-8.7.x

我一遍又一遍地搜索,但还没找到可行的东西......

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的顶部应该只允许images-content-element。

cType.allowed = image

" Home" -backend-layout的顶部应该只允许text-content-element

cType.allowed = text

我尝试的最后两件事是

首先:使用typoscript中的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的新手,我真的很感谢你的帮助,但要具体说明在哪里改变什么,否则我会再次迷失...... ^^

谢谢!

3 个答案:

答案 0 :(得分:2)

尝试这样的事情:

    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
            }
          }
        }
      }
    }

答案 1 :(得分:2)

你的方法很好,但条件不正确。

Prolbem one:BE没有可用的TSFE。

  

在“globalString”条件下,键“TSFE:”将不起作用,因为   TSFE全局对象仅存在于FE上下文中。 “LIT:”键将   不起作用,因为它用于比较TypoScript常量,这   在BE上下文中不可用。

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

您需要使用“页面”而不是“TSFE: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”都是错误的。

答案 2 :(得分:1)

感谢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在页面配置上可用,并具有受限内容元素的附加条件。如您所见,这也可以与自定义内容元素一起使用。

我花了很长时间才弄清楚这一点(作为新手),我希望这可能有助于其他人......