TYPO3 - 通过自定义内容元素更改编辑页面上自己的字段

TYPO3 - changing own Field on edit page by custom content element

我使用 TYPO3 版本创建了一个自定义内容元素。 10.4.21,但我有问题。

问题:在内容元素的每个编辑页面上显示相同的字段。

我只想在我的自定义内容元素(对于我的 flipbox-content 元素)上使用自己的字段。但是如果我 select 例如一个常规的文本元素,那么我也可以通过文本元素在编辑页面上看到我自己的字段。

我把代码写在TCA/Overrides/tt_content.php:

###############################################
#                    Front side               #
###############################################
// front side header
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
    'tt_content',
    [
       'tx_pagesaddfields_frontsideheader' => [
          'exclude' => 0,
          'label' => 'Front side header',
          'config' => [
             'type' => 'text',
             'renderType' => 'input',
             'items' => [
                [
                   0 => '',
                   1 => ''
                ]
             ],
          ],
       ],
    ]
 ); 
 
 // front side bodytext
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
    'tt_content',
    [
       'tx_pagesaddfields_frontsidebodytext' => [
          'label' => 'Front side bodytext',
          'config' => [
                'type' => 'text',
                'cols' => 40,
                'rows' => 15,
                'enableRichtext' => true,
          ],
       ],
    ]
 );
 
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
    'tt_content',
    'general',
    'tx_pagesaddfields_frontsideheader, tx_pagesaddfields_frontsidebodytext',
    'after:tx_container_parent'
 ); 
 
 
 ###############################################
 #                Back side                    #
 ###############################################
 
 // back side header
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
    'tt_content',
    [
       'tx_pagesaddfields_backsideheader' => [
          'exclude' => 0,
          'label' => 'Back side header',
          'config' => [
             'type' => 'text',
             'renderType' => 'input',
             'items' => [
                [
                   0 => '',
                   1 => ''
                ]
             ],
          ],
       ],
    ]
 );
 
 // back side bodytext
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
    'tt_content',
    [
       'tx_pagesaddfields_backsidebodytext' => [
          'label' => 'Back side bodytext',
          'config' => [
                'type' => 'text',
                'cols' => 40,
                'rows' => 15,
                'enableRichtext' => true,
          ],
       ],
    ]
 );
 
 \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
    'tt_content',
    'general',
    'tx_pagesaddfields_backsideheader, tx_pagesaddfields_backsidebodytext',
    'after:tx_pagesaddfields_frontsidebodytext'
 ); 

我知道,因为我写了“addTCAcolumns('tt_content')。但我不知道如何重写它们,让我的新字段只显示在我的自定义编辑页面上。

修改页面是否正确?: https://docs.typo3.org/m/typo3/reference-coreapi/master/en-us/ExtensionArchitecture/ExtendingTca/Examples/Index.html (通过示例 1)和 https://docs.typo3.org/m/typo3/reference-tca/master/en-us/ColumnsConfig/Type/User/Index.html#columns-user?

我尝试这样做,但它在我的网站上不起作用。不幸的是,我没有足够的经验PHP...如果你知道其他网站或者如果你能在这里解释,请在这里写下来。

我希望有人能帮助我。谢谢。

最好将一个文件添加到每个自定义内容元素 TCA/Overrides/ 中。名称由您决定,TYPO3 会读取此文件夹中的所有 .php 个文件。 content_element_<your_ctype>.phptt_content_<your_ctype>.php 经常用作名称。

https://github.com/benjaminkott/bootstrap_package/blob/master/Configuration/TCA/Overrides/203_content_element_card_group.php

在这里您可以看到它是如何在 bootstrap_package 中为具有 CType card_group

的自定义内容元素完成的

在第 42 行 $GLOBALS['TCA']['tt_content']['types']['card_group'] 中,配置被限制为 ['(C)type']['card_group'] 并且 'showitem' => ' 告诉 TYPO3 什么以及如何显示该内容元素的字段。

从第 70 行您可以看到如何设置新字段,在第 49 行您可以看到它是如何添加的。