Полезные фишки для миграции расширений при переходе на TYPO3 11+
Описание
Следующие хуки, связанные с class TypoScriptFrontendController
и frontend-рендерингом, были помечены как устаревшие:
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['pageIndexing']
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['isOutputting']
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-contentStrReplace']
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-output']
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['hook_eofe']
Следующие методы также были помечены как устаревшие, так как они содержат только код, необходимый для выполнения хуков:
TypoScriptFrontendController->isOutputting()
TypoScriptFrontendController->processContentForOutput()
Влияние
Если сторонние расширения используют хуки, E_USER_DEPRECATED
при выполнении хука будет вызвана ошибка PHP.
Вызов двух указанных выше методов также вызовет E_USER_DEPRECATED
ошибку PHP.
Затронутые установки
Установки TYPO3 с пользовательскими расширениями, использующими хуки или упомянутые выше, что обычно, если вместо этого они не использовали промежуточное ПО PSR-15 или другие хуки.
Миграция
Хук $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['pageIndexing']
должен быть заменен на $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-cached']
хук для индексации страниц. Однако обратите внимание, что $TSFE->content
сейчас это может содержать содержимое UTF-8, а не содержимое, уже преобразованное в определенный набор символов, связанный со metaCharset
свойством TypoScript.
Начиная с TYPO3 v9, эмиттер HTTP-ответов основан на PSR-7, хук $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['isOutputting']
можно удалить, поскольку TYPO3 можно настроить с помощью промежуточного программного обеспечения PSR-15, чтобы определить, следует ли эмитировать/отображать содержимое страницы или нет.
Крючок для динамической замены контента через $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['tslib_fe-contentStrReplace']
удален, так как он больше не нужен для TYPO3 Core. Если содержимое должно динамически изменяться, используйте промежуточное ПО PSR-15.
Хук $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['contentPostProc-output']
не нужен, так как вместо этого его можно построить с помощью промежуточного программного обеспечения PSR-15, а весь контент возвращается через RequestHandler интерфейса TYPO3.
Расширения, использующие ловушку $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['tslib/class.tslib_fe.php']['hook_eofe']
, должны быть преобразованы в промежуточное программное обеспечение PSR-15, так как это позволяет изменять содержимое и заголовки объекта ответа PSR-7.
Метод TypoScriptFrontendController->isOutputting()
устарел и может быть удален в стороннем коде.
То же самое относится и к тому, TypoScriptFrontendController->processContentForOutput()
что следует использовать только для запуска устаревших хуков, все еще применяемых в системе.