我们安装了TYPO3 9.5,其中包含许多其他网站。
我们希望为每个站点存储一些自定义配置(例如,在页脚中显示电话号码是/否以及类似的内容),并使编辑者可以在后端以简单的方式更改此设置。
如果我们可以将这些属性存储在每个站点的根目录上,但是能够根据需要覆盖子页面上的(某些)属性,那就太好了。
与Fluidtypo3 / flux带来的页面属性类似。
是否可以使用TYPO3核心和自定义扩展来实现?例如。通过扩展页表还是添加自定义表?
答案 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