Простые переводы по моему вопросу могут быть добавлены как @Ricardo, найденный для меня, ищите его ответ на этой странице.
Более сложные вещи возможны только при замене (хотя бы) одного класса.
Замена довольно проста, и опасность получения некоторых несовместимостей в будущем путем введения собственного кода в ядро довольно мала, поскольку методы в существующем классе весьма ограничены.
Итак, как заменить классы, связанные с RouteEnhancers
?
Все важные классы указаны в глобальном массиве $GLOBALS['TYPO3_CONF_VARS']
и могут быть определены в файлах typo3conf/LocalConfiguration.php
или typo3conf/AdditionalConfiguration.php
.
Класс, который необходим для отображения локализованных значений на определенные локальные объекты (например, de_DE, en_GB, en_US), регистрируется следующим образом:
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['LocaleModifier'] = \TYPO3\CMS\Core\Routing\Aspect\LocaleModifier::class;
Определение там собственного класса дает возможность предоставить дополнительную функциональность.
Какие другие связанные с маршрутизацией классы могут быть определены?
Механизм маршрутизации довольно сложен, поэтому существует несколько классов, которые можно легко заменить.
Чтобы получить обзор предопределенных и заменяемых классов, вы можете проверить
массив $GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']
в бэкэнде TYPO3, открыв
модуль System
-> Configuration
и там в верхней части страницы в раскрывающемся поле выбрал $GLOBALS['TYPO3_CONF_VARS'] (Global Configuration)
.
В текущей версии TYPO3-9.5.5 сконфигурированы следующие классы по умолчанию
// Aspects
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['LocaleModifier'] = TYPO3\CMS\Core\Routing\Aspect\LocaleModifier::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['PersistedAliasMapper'] = TYPO3\CMS\Core\Routing\Aspect\PersistedAliasMapper::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['PersistedPatternMapper'] = TYPO3\CMS\Core\Routing\Aspect\PersistedPatternMapper::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['StaticRangeMapper'] = TYPO3\CMS\Core\Routing\Aspect\StaticRangeMapper::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['aspects']['StaticValueMapper'] = TYPO3\CMS\Core\Routing\Aspect\StaticValueMapper::class;
// Enhancers
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['enhancers']['Extbase'] = TYPO3\CMS\Extbase\Routing\ExtbasePluginEnhancer::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['enhancers']['PageType'] = TYPO3\CMS\Core\Routing\Enhancer\PageTypeDecorator::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['enhancers']['Plugin'] = TYPO3\CMS\Core\Routing\Enhancer\PluginEnhancer::class;
$GLOBALS['TYPO3_CONF_VARS']['SYS']['routing']['enhancers']['Simple'] = TYPO3\CMS\Core\Routing\Enhancer\SimpleEnhancer::class;
В настоящее время я не вижу необходимости программировать собственное решение, но не стесняйтесь публиковать его как ответ, если вы его запрограммировали.