在多站点TYPO3安装中进行站点特定配置的最佳方法是什么?

时间:2019-03-25 16:03:38

标签: typo3 typo3-9.x

我们安装了TYPO3 9.5,其中包含许多其他网站。

我们希望为每个站点存储一些自定义配置(例如,在页脚中显示电话号码是/否以及类似的内容),并使编辑者可以在后端以简单的方式更改此设置。

如果我们可以将这些属性存储在每个站点的根目录上,但是能够根据需要覆盖子页面上的(某些)属性,那就太好了。

与Fluidtypo3 / flux带来的页面属性类似。

是否可以使用TYPO3核心和自定义扩展来实现?例如。通过扩展页表还是添加自定义表?

1 个答案:

答案 0 :(得分:2)

您需要在网站配置和常规页面之间有所不同!

  • 该站点配置对于完整站点有效,因此对于每个页面
  • 页面在页面级别可以不同

两个用例都是有效的,所以让我们详细解释


扩展站点配置

可以通过创建文件<site-extension>/Configuration/SiteConfiguration/Overrides/sites.php

轻松扩展站点配置
<?php
defined('TYPO3_MODE') || die('Access denied.');

call_user_func(
    function ($table) {
        $GLOBALS['SiteConfiguration'][$table]['columns']['trackingCode'] = [
            'label' => 'Label',
            'config' => [
                'type' => 'input',
                'eval' => 'trim',
                'placeholder' => 'GTM-123456',
            ],
        ];

        $GLOBALS['SiteConfiguration'][$table]['types']['0']['showitem'] .= ',--div--;Extra,trackingCode';
    },
    'site'
);

然后可以容易地获取新字段trackingCode的值,例如由TS与data = site:trackingCode。另外,您也可以使用SiteProcessor来访问FLUIDTEMPLATE中的站点配置。

扩展页面

创建文件<site-extension>/Configuration/TCA/Overrides/pages.php

<?php

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
    'pages',
    [
        'trackingCode' => [
            'exclude' => true,
            'label' => 'A label',
            'config' => [
                'type' => 'input',
            ]
        ],
    ]
);

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
    'pages',
    '--div--;Extra, trackingCode'
);

和`ext_tables.sql``

CREATE TABLE pages (
    trackingCode text NOT NULL
);

,您将使用TypoScript访问该字段,并使用{data.trackingCode}访问FLUIDTEMPLATE。

使用幻灯片

通过将trackingCode添加到[FE][addRootLineFields]中的逗号分隔列表中(使用“安装工具”>“设置”>“配置安装范围选项”,可以覆盖所有子页面的值。

以下TypoScript将启动rootline并返回第一个值集。

lib.code = TEXT
lib.code.data = levelfield:-1,trackingCode, slide