微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

当 sys_language_uid != 0 时,对 showItem 的 TCA 覆盖

如何解决当 sys_language_uid != 0 时,对 showItem 的 TCA 覆盖

我正在将 TYPO3 v8.7 更新到 TYPO3 10.4 LTS

在 TCA 中,我们有一个带有我们选择的 showitem 的 pageType。在 v8 中,我们使用以下内容为翻译页面创建自定义视图,例如。 pages_language_overlay

$GLOBALS['TCA']['pages_language_overlay']['types'][$doktype] = array_replace_recursive(
    $GLOBALS['TCA']['pages_language_overlay']['types'][$doktype],[
        'showitem' => '
                         myCustomShowItemString
                '
    ]
);

问题:由于 pages_language_overlay 不再存在,再次出现这种行为的正确方法是什么?

解决方法

由于翻译后的 pages 记录也是 pages 记录,因此您需要对表 pages 进行此配置。

要么你已经有了它,因为你的新 doktype 对每种语言的行为都是一样的

或者如果 sys_language_uid 不是 0,您需要特殊处理。
那么您可能需要 display conditions 用于根据 sys_language_uid 行为不同的字段(这个可见,其他不可见?)

,

TCA - 必须在自定义字段之后加载的文件

$disableOnLanguageOverlay = [
    'my_tca_field','my_tca_field',];

foreach ($disableOnLanguageOverlay as $field) {
    if (isset($GLOBALS['TCA']['pages']['columns'][$field])) {
        $GLOBALS['TCA']['pages']['columns'][$field] = array_merge($GLOBALS['TCA']['pages']['columns'][$field],['l10n_mode' => 'exclude']);
    }
}

对于 Typoscript

[siteLanguage("languageId") != 0]
    TCEFORM {
        pages {
            myField {
                disabled = 0
            }
        }
    }
[global]

以上解决

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。