如何在 TYPO3 后端隐藏数据库字段

How to hide database fields in TYPO3 backend

这在 TYPO3 中很常见,但我必须承认有这么多不同的选项和方法来做事,有时有点让人不知所措。

我有 3 个用例(其中 1 个是我目前正在寻找的解决方案)。所有都适用于 TYPO3 中已经存在的数据库字段。应在站点包中进行更改。

  1. 完全隐藏字段,根本不使用,不应在 BE
  2. 中弄乱表格
  3. 仅供管理员使用,不适用于编辑器
  4. 如果在 BE 组中配置,则仅供管理员和编辑使用。

对于3,我通常使用TCA中的“exclude”字段,这样也可以让BE用户也可以使用该字段。我想也可以用于 2(尽管这确实会弄乱 BE 组部分中的复选框,这也是一个问题)。

对于1,不知道要不要用TSconfigdisabled。我想如果我已经在站点包中,我可以直接更改 TCA(TSconfig,覆盖 TCA)。但是,我不知道用 TCA 覆盖 TCA 或用 TSconfig 覆盖 TCA 是否有区别。

如果有人知道如何最好地(现在)在网站包中做到这一点,而不是通过在 BE 中编辑,那就太好了。

我更喜欢基于 PageTSconfig 的解决方案。在 TCA/Overrides/pages.php:

中注册一个新的 PageTSconfig 文件
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(
    'sitepackage',
    'Configuration/TSconfig/Page.tsconfig',
    'Customer PageTSconfig'
);

清除缓存后,您可以 select 在资源选项卡的页面属性中此文件。

在此文件中,我们添加如下条目:

TCEFORM.tt_content.layout.disabled = 1
...

如果您直接使用 TCA 停用列,集成商将找不到配置和列名称。这就是为什么我更喜欢使用 PageTSconfig。这样,集成商就可以转到 BE 模块“信息”-> select PageTSconfig -> 分析哪些列被禁用了。只需一点点复制和粘贴,集成商就可以轻松地再次激活该字段。

我一直使用TsConfig来隐藏元素,原因如下:

  • 如果默认情况下对每个人都隐藏,我作为集成商知道这个功能不会在整个项目中使用。在大多数项目中,并非内容元素的每个功能都是必需的,因此也不会在前端设置样式。我从来没有 运行 告诉客户“是的,有一个字段”,我只是启用它而忘记了在前端完成的任何额外工作
  • 可以限制为用户组
  • 可以限制部分树