【问题标题】:Getting the page title from the new PageTitle从新的 PageTitle 获取页面标题
【发布时间】:2020-10-05 11:39:03
【问题描述】:

我正在寻找一种方法来通过新的 PageTitleProvider API 获取页面标题集,以便在 FluidTemplate 中显示它。

在我们的一个 TYPO3 安装中,页面标题用作标题,显示在页面本身上。主 PAGE 对象设置为呈现 FLUIDTEMPLATE 对象。我已经在文档中的新 PageTitleAPI 上实现了示例,https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ApiOverview/PageTitleApi/Index.html 到我的扩展中,并且对于标签来说效果很好。

但是,在页面本身中,仍然显示页面中设置的标题,而不是我在扩展程序中设置的标题。

我发现,我可以实例化 PageTitleProviderManager,但 getTitle 仍然解析为页面名称,而不是我设置的标题,这很可能是因为此对象在扩展设置 PageTitleProviders 之前已解析。

$pageTitleProviderManager = GeneralUtility::makeInstance(\TYPO3\CMS\Core\PageTitle\PageTitleProviderManager::class);
\TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump( $pageTitleProviderManager->getTitle() );
// -> outputs the page name, not the title custom page title

有没有办法在所有 Providers 都被处理后解析页面标题并显示在一个流体模板中?

【问题讨论】:

  • 我没试过,不过应该可以读出TSFE并赋值给模板。
  • TSFE 中有一个 getPageTitle(),是的。但这也只包含页面名称。

标签: typo3 typo3-9.x


【解决方案1】:

我还假设它取决于执行顺序。所以你需要在页面模板中呈现页面标题之前建立一个执行插件的顺序。

如今,大多数集成商使用f:cObject 视图助手来呈现带有lib.content 的内容。这意味着内容(并且您的插件呈现得很晚),因为页面标题可能在页面模板中的任何内容之前呈现(独立于您是使用页面模板中的模板变量还是当前执行 PHP 或打字稿的 viewhelper的渲染。

这里你会得到如何改变顺序的提示:

尝试使用页面模板将内容(包括插件)呈现为流体变量(例如:

page.10 = FLUIDTEMPLATE
page.10.variables.content < styles.content.get

) 并尝试在呈现页面流体时获取页面标题:当初始 FLUID 变量已经计算时,使用 viewhelper 获取页面标题。


当然,您也可以在通过 viewhelper 访问页面标题之前,为页面 FLUID 模板中的内容定义一个 FLUID 变量:
&lt;f:variable name="content"&gt;&lt;f:cObject typoscriptObejctPath="lib.content" /&gt;&lt;/f:variable&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多