TYPO3 基于TCA记录自动创建页面

TYPO3 automatic page creation based on TCA record

我对我的项目有特殊要求,我需要帮助。我正在使用 TYPO3 8.7.8。我有一个自定义扩展来在前端呈现标签。我们可以将标签作为 TCA 记录添加到后端存储文件夹中。在 TCA 记录中,您可以标记名称。我的要求是,当我保存 TCA 记录时,我想在特定位置自动创建一个与标签同名的 TYPO3 页面。每次添加 TCA 记录时,我都需要自动创建相应的页面。这可能吗?我可以在保存 TCA 时使用 hook。但是有没有自动创建页面的功能?

自动创建页面后,我想在该页面中自动插入一个具有特定 flexform 值的插件内容元素。我知道这是一个奇怪的要求,但我想知道是否可行。

确切地说,您会在保存时触发挂钩,然后下一步您可以使用数据处理程序生成新页面(和可能的内容)。

要创建页面和内容,请使用类似于以下数据结构的内容

$data = [
   'pages' => [
       'NEW_1' => [
           'pid' => 456,
           'title' => 'Title for page 1',
       ],
    ],
    'tt_content' => [
        'NEW_123' => [
           'pid' => 'NEW_1',
           'header' => 'My content element',
        ],
    ],
];

然后调用具有该结构的数据处理程序:

$tce = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\CMS\Core\DataHandling\DataHandler');
$tce->stripslashes_values = 0;
$tce->start($data, []);
$tce->process_datamap();

在以下文档中了解更多信息 https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Typo3CoreEngine/Database/Index.html#data-arrayhttps://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Typo3CoreEngine/UsingDataHandler/Index.html

您确定需要额外的页面吗?

一般来说,您的问题听起来像是您需要插入插件的页面以及插件依赖于 url 参数的位置(可以使用 realurl 转换为路径段)仅显示取决于所选记录(标签)的信息。

如果未选择任何标签,您可以输出包含所有可用标签的列表作为导航至所有可能标签的菜单。

只需一点点努力(比编写预期的钩子少),您就可以将所有标签添加到菜单中。