在 TYPO3 12 中的调度程序任务或 CLI 上下文中渲染内容元素

问题描述 投票:0回答:2

我有一个 TYPO3 v12 项目,管理员可以在后端创建内容元素(文本+图像)。 内容元素应使用 Fluid_styled_content 呈现并通过电子邮件发送。 这在前端上下文中工作得很好。但是,当尝试在调度程序作业或 CLI 上下文中渲染元素时,渲染会失败。 有人有一个工作示例如何在 TYPO3 12 下在此上下文中呈现内容元素吗?

我尝试过 TYPO3 早期版本存在的各种解决方案,包括手动初始化前端和 TypoScript 数组。

typo3 command-line-interface scheduled-tasks typoscript typo3-12.x
2个回答
0
投票

这不会真正起作用。我建议一个不同的建议:

在前端准备一个页面,减少页面模板或仅使用 TypoScript 与类似的东西

page >
page = PAGE
page {
    20 = RECORDS
    20 {
            source.data = GP:recordId
            dontCheckPid = 1
            tables = tt_content
    }
} 

并在 CLI 中使用 cUrl 或

GeneralUtility::getUrl($url)

获取内容

您还应该限制请求(如果这与您相关),否则任何人都可以通过测试所有 ID 来读取任何内容元素


0
投票

我知道不鼓励初始化自己的 TSFE,但现实世界中的应用程序需要这样做,因为目前许多用例没有好的替代方案(请参阅核心成员 Christian Kuhn 的answer)。

我有一个具有类似场景的遗留扩展(将邮件与在 FE 上下文中生成的内容进行排队,以便稍后通过调度程序任务或控制台命令发送)。但就我而言,我需要基于(现已弃用...)

AbstractPlugin
渲染插件控制器的输出,而不是在 FE 上下文中。主要问题是,如何初始化 TSFE 并获取所有必需的 TypoScript 配置?

您可以使用扩展 nnhelpers,特别是他们的 Tsfe 类。该扩展适用于 v12。我自己没有使用过这个扩展,但我查阅了它的源代码以获取灵感(主要是 v10 和 v11)。它还提供了许多其他有用的帮助类。

另一个重要的信息来源是两个中间件

typo3/cms-frontend/tsfe
和核心中的
typo3/cms-frontend/prepare-tsfe-rendering
,它基本上只做你想做的事情(初始化 TSFE 和打字稿)。我查阅了这些信息来更新 v12 的实现。

基于此,您可以开始渲染内容元素。具体实现显然取决于许多因素(您是否有包含内容的页面?是否有自己的 TS 配置?您是否有 PSR-7 请求对象?等等),但我希望这可以帮助您入门。

© www.soinside.com 2019 - 2024. All rights reserved.