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

时间:2017-10-22 07:19:23

标签: typo3 typo3-extensions typo3-8.x typo3-8.7.x

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

然后使用该结构调用datahandler:

$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

答案 1 :(得分:0)

您确定需要其他页面吗?

一般来说,你的问题听起来像你需要一个插入插件的页面,并且插件依赖于url-parameter(可以用realurl转换成路径段),它只显示取决于所选记录的信息(标记)。

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

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