Читать метатеги из TypoScript в классах PHP - PullRequest
1 голос
/ 23 мая 2019

Я использую TYPO3 9 и хочу реализовать функцию обмена на основе Fluid.Поэтому я хочу использовать уже предоставленные метатеги.

Я написал класс ViewHelper, чтобы метатеги были доступны для моего шаблона Fluid.В поисках возможных решений я нашел две вещи:

  1. Настройка метаданных через TSFE с помощью $GLOBALS['TSFE']->page['description'] = $newDescription;.Но я не могу получить данные с помощью $GLOBALS['TSFE']->page['description']

  2. с помощью нового MetaTagManager TYPO3.Но, похоже, что в диспетчере нет метатегов, установленных с помощью TypoScript.

Есть ли другой способ прочитать все установленные метатеги в классах PHP?

1 Ответ

0 голосов
/ 27 мая 2019

Доступ к метатегам, добавленным через page.meta TypoScript невозможен во время рендеринга контента.

Причина проста: контент визуализируется до обработки метатегов (см. Метод generatePageContentWithHeader in TYPO3\CMS\Frontend\Http\RequestHandler

Простой обходной путь - обработать все связанные метатеги только с помощью вашего Extension / View Helper.

Более сложный подход - это какой-то реестр (например, статическое свойство), которое собирает все изменения, которые вы хотите внести в существующие метатеги. Реестр заполняется вашим помощником вида.

Затем вы можете вызвать userFunc, который выполняется после Метатеги TypoScript собираются:

page.jsFooterInline.323 = USER
page.jsFooterInline.323.userFunc = My\Extension\Hooks\MetaHook->processMeta

В processMeta теперь вы можете получить доступ к метаданным страницы (например, page.meta.description, например:

$registry = GeneralUtility::makeInstance(MetaTagManagerRegistry::class);
$metaDataArray = $registry->getManagerForProperty('description')->getProperty('description');
...