【问题标题】:Read metatags from TypoScript in PHP classes从 PHP 类中的 TypoScript 读取元标记
【发布时间】:2019-05-23 10:31:06
【问题描述】:

我正在使用 TYPO3 9,我想实现基于 Fluid 的共享功能。因此我想使用已经提供的元标记。

我编写了一个 ViewHelper 类来使元标记可用于我的 Fluid 模板。研究可能的解决方案我发现了两件事:

  1. 通过 TSFE 使用 $GLOBALS['TSFE']->page['description'] = $newDescription; 设置元数据。但我无法通过$GLOBALS['TSFE']->page['description']获取数据

  2. 使用 TYPO3 的新 MetaTagManager。但管理器似乎不包含通过 TypoScript 设置的元标记。

还有其他方法可以读取 PHP 类中所有设置的元标记吗?

【问题讨论】:

    标签: php typo3 typo3-9.x


    【解决方案1】:

    在内容呈现期间无法访问通过page.meta TypoScript 添加的元标记。

    原因很简单:在处理元标记之前渲染内容(见TYPO3\CMS\Frontend\Http\RequestHandler中的方法generatePageContentWithHeader

    一个简单的解决方法是仅使用您的扩展程序/视图助手处理所有相关的元标记。

    更复杂的方法是某种类型的注册表(例如静态属性),它收集您想要对现有元标记进行的所有更改。注册表由您的视图助手填充。

    然后你可以调用一个 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');
    

    【讨论】:

      猜你喜欢
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多