TYPO3 v11多站点:扩展站点配置GUI及默认导入配置需求
TYPO3 v11 多站点配置需求解决方案
1. 扩展站点配置GUI支持settings顶层嵌套配置
要让无SSH权限的管理员通过GUI添加settings节点下的嵌套配置,需修改站点配置的TCA定义,将字段纳入settings结构:
- 在自定义扩展的
Configuration/SiteConfiguration/Overrides/sites.php中添加TCA配置:
<?php defined('TYPO3') or die(); $GLOBALS['TYPO3_CONF_VARS']['SYS']['site']['configuration']['settings'] = [ 'label' => 'Settings', 'type' => 'array', 'children' => [ 'foo1' => [ 'label' => 'Foo 1', 'type' => 'input', 'eval' => 'trim', ], 'foo2' => [ 'label' => 'Foo 2', 'type' => 'input', 'eval' => 'trim', ], // 可按需添加更多字段 ], ];
- 刷新TYPO3缓存后,站点配置GUI会出现名为"Settings"的折叠面板,管理员可在其中填写
foo1、foo2等值,保存后站点配置文件会自动生成如下结构:
settings: foo1: bar1 foo2: bar2
- 在TypoScript中直接通过
{$foo1}调用对应值,TYPO3会自动解析config.site.settings.foo1的配置。
2. 新建config.yaml时默认添加imports配置
通过监听TYPO3的站点配置创建事件,自动修改生成的YAML内容:
- 在自定义扩展中创建事件监听器类
Classes/EventListener/SiteConfigurationAddedListener.php:
<?php namespace Vendor\YourExtension\EventListener; use TYPO3\CMS\Core\Configuration\Site\Event\SiteConfigurationAddedEvent; class SiteConfigurationAddedListener { public function __invoke(SiteConfigurationAddedEvent $event): void { $configuration = $event->getConfiguration(); // 添加默认imports配置,可根据需求调整resource路径 $configuration['imports'] = [ ['resource' => 'EXT:your_extension/Configuration/Site/Defaults.yaml'] ]; $event->setConfiguration($configuration); } }
- 在
Configuration/Services.yaml中注册事件监听器:
services: Vendor\YourExtension\EventListener\SiteConfigurationAddedListener: tags: - name: event.listener identifier: 'your-extension/site-configuration-added' event: TYPO3\CMS\Core\Configuration\Site\Event\SiteConfigurationAddedEvent
- 刷新缓存后,新建站点时生成的
config.yaml会自动包含指定的imports配置:
imports: - { resource: "EXT:your_extension/Configuration/Site/Defaults.yaml" }
内容的提问来源于stack exchange,提问作者Lustmord
相关产品推荐
相关产品推荐

