代码之家  ›  专栏  ›  技术社区  ›  Arun Chandran

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

  •  0
  • Arun Chandran  · 技术社区  · 7 年前

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

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

    2 回复  |  直到 7 年前
        1
  •  2
  •   Susi    7 年前

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

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

    $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-array https://docs.typo3.org/typo3cms/CoreApiReference/ApiOverview/Typo3CoreEngine/UsingDataHandler/Index.html

        2
  •  0
  •   Bernd Wilke πφ    7 年前

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

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