【问题标题】:How to hide database fields in TYPO3 backend如何在 TYPO3 后端隐藏数据库字段
【发布时间】:2021-08-25 09:01:28
【问题描述】:

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

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

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

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

对于 1,我不知道我是否应该使用 TSconfig disabled。我想如果我已经在站点包中,我可以直接更改 TCA(TSconfig,覆盖 TCA)。但是,我不知道是用 TCA 覆盖 TCA 还是用 TSconfig 覆盖 TCA 是否会有所不同。

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

【问题讨论】:

  • 集成商也可以访问/理解禁用 TSconfig。使用 TCA 是 IMO 更多在开发人员的范围内。所以,也许这是项目中的一个标准。
  • @julian 谢谢。这就说得通了。但不确定 TSConfig“已禁用”的相应 TCA 设置是什么。搜索这种东西会得到很多 TSconfig 的例子——猜猜这更直观,更容易使用。这是另一个覆盖整个节目项目的问题 (stackoverflow.com/questions/45019971/…) - 看起来有点混乱且容易出错。

标签: typo3


【解决方案1】:

我更喜欢基于 PageTSconfig 的解决方案。在TCA/Overrides/pages.php注册一个新的PageTSconfig文件:

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::registerPageTSConfigFile(
    'sitepackage',
    'Configuration/TSconfig/Page.tsconfig',
    'Customer PageTSconfig'
);

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

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

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

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

【讨论】:

  • 感谢您的解释。对于我们的用例,我正在为我们的站点包寻找一些东西,它已经为我们的站点定制了 - 所以不需要集成(站点包就是集成)。但我理解你解释的方式,它使它更灵活。此外,修改 TSconfig 看起来更简单(比更改 TCA)。
【解决方案2】:

我总是使用 TsConfig 来隐藏元素,原因如下:

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

【讨论】:

  • 我不太明白你的第一点:如果一个字段总是被隐藏(并且从不使用),这不是完全通过 TCA 关闭它的理由吗?对于第二个 2 点,这是通过 TSconfig 使其可配置的充分理由。 (对于我的用例,我们有一些实际上根本没有使用的字段。)
  • 我不想混合配置,在 tsconfig 中删除 tca 和所有其他配置 - 因此我在 tsconfig 中完成所有操作
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 2021-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多