简化TYPO3中内容元素/TCA的创建

简化TYPO3中内容元素/TCA的创建,typo3,Typo3,我正在寻找一种方法来简化TYPO3中内容元素的创建 我遵循官方文件: 现在,我们有了这种令人畏惧的美: // Configure the default backend fields for the content element $GLOBALS['TCA']['tt_content']['types']['yourextensionkey_newcontentelement'] = [ 'showitem' => ' --div--;LLL:EXT:core/R

我正在寻找一种方法来简化TYPO3中内容元素的创建

我遵循官方文件:

现在,我们有了这种令人畏惧的美:

// Configure the default backend fields for the content element
$GLOBALS['TCA']['tt_content']['types']['yourextensionkey_newcontentelement'] = [
    'showitem' => '
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
            --palette--;;general,
            --palette--;;headers,
            bodytext;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:bodytext_formlabel,
        --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
            --palette--;;frames,
            --palette--;;appearanceLinks,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
            --palette--;;language,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
            --palette--;;hidden,
            --palette--;;access,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
            categories,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
            rowDescription,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
    ',
    'columnsOverrides' => [
        'bodytext' => [
            'config' => [
                'enableRichtext' => true,
                'richtextConfiguration' => 'default',
            ],
        ],
    ],
];
在我看来,似乎所有需要替换的都是“yourextensionkey\uNewContentElement”,其余的都来自核心。除非你知道自己在做什么,并且想用不同的方式来做

我的问题是:

  • 这到底是干什么的?(我知道,它为编辑CE的形式设置了一些TCA。)
  • 如果对于标准情况也是如此,我们是否可以从核心获取整个阵列,例如,通过为此提供一个函数?这是一个好办法吗
  • 你有其他的想法来简化这个吗
  • 是否有方法可用于编写此人类可读的文件并将其转换或使用autoexpand(例如,通过PhpStorm插件)进行转换

我知道有一项倡议致力于改善长期处理行政长官的方式。我现在寻找的是我们可以在短期内简化CE创建的事情。我也知道有像“mask”或“dce”这样的扩展,但我们没有在官方文档中宣传它们,我们宣传:


免责声明:我不是在TYPO3中创建内容元素的专家。大多数时候,我用插件或其他功能编写扩展。这可能是个愚蠢的问题/建议。请告诉我。

我理解您重复代码和复制/粘贴工作的“问题”,尽管它允许很大的灵活性

关于你的问题:

这到底是干什么的?(我知道,它为编辑CE的形式设置了一些TCA。)

TYPO3内容元素组织在所谓的调色板中。选项板可以包含多个属性

例如,调色板“标题”具有:

  • 标题
  • 标题(u)布局
  • 收割台位置
  • 日期
  • 标题链接
因此,如果您想包含所有默认的标题字段,只需包含标题选项板就可以包含所有的字段

您可以在frontend/Configuration/TCA/tt_content.php中看到大多数默认选项板(请参见带有键“paletes”的数组)

在列替代中,可以轻松替代核心中已定义的特定值/属性/设置。在您的示例中,它会覆盖字段“bodytext”的RTE设置

字符串本身看起来有点神秘。占位符及其作用:

  • --div--;选项卡的标签-->使用给定标签启动新选项卡
  • --调色板--;;hidden-->加载没有特定标签的新调色板
  • --调色板--;你的标签;hidden-->加载带有特定标签的新调色板
如果对于标准情况也是如此,我们是否可以从核心获取整个阵列,例如,通过为此提供一个函数?这是一个好办法吗

不幸的是,这不是一个数组,而是一个字符串。因此,您不能合并,除非您希望拆分字符串并再次合并它们。在该字符串中的某个地方,您需要包含自己的字段/选项板。此外,并非每个新的内容元素都需要所有字段。因此,在我看来,对于每一个新的内容元素,完全实现它更具可读性

例如:

$GLOBALS['TCA']['tt_content']['types']['alert'] = array(
    'showitem' => '
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
            --palette--;;general,
            --palette--;LLL:EXT:your_ext/Resources/Private/Language/backend.locallang.xlf:tt_content.alert.palettes.general.title;alert,
        --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
            --palette--;;frames,
            --palette--;;appearanceLinks,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
            --palette--;;language,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
            --palette--;;hidden,
            --palette--;;access,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
            rowDescription,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
    ',
    'columnsOverrides' => [
        'bodytext' => [
            'config' => [
                'enableRichtext' => true
            ]
        ],
    ]
);
在本例中,我直接在核心调色板“general”之后加载自定义调色板。这也可以通过助手方法完成。我不喜欢:-)

你有其他的想法来简化这个吗

如前所述,使用helper方法或其他字符串组合。在我看来,这将导致灵活性和可读性较差

我不喜欢代码重复,但在这种情况下,我用自己的、未合并/未合并的字符串定义每个新的内容元素…

我理解您重复代码和复制/粘贴工作的“问题”,尽管它允许很大的灵活性

关于你的问题:

这到底是干什么的?(我知道,它为编辑CE的形式设置了一些TCA。)

TYPO3内容元素组织在所谓的调色板中。选项板可以包含多个属性

例如,调色板“标题”具有:

  • 标题
  • 标题(u)布局
  • 收割台位置
  • 日期
  • 标题链接
因此,如果您想包含所有默认的标题字段,只需包含标题选项板就可以包含所有的字段

您可以在frontend/Configuration/TCA/tt_content.php中看到大多数默认选项板(请参见带有键“paletes”的数组)

在列替代中,可以轻松替代核心中已定义的特定值/属性/设置。在您的示例中,它会覆盖字段“bodytext”的RTE设置

字符串本身看起来有点神秘。占位符及其作用:

  • --div--;选项卡的标签-->使用给定标签启动新选项卡
  • --调色板--;;hidden-->加载没有特定标签的新调色板
  • --调色板--;你的标签;hidden-->加载带有特定标签的新调色板
如果对于标准情况也是如此,我们是否可以从核心获取整个阵列,例如,通过为此提供一个函数?这是一个好办法吗

不幸的是,这不是一个数组,而是一个字符串。因此,您不能合并,除非您希望拆分字符串并再次合并它们。在该字符串中的某个地方,您需要包含自己的字段/选项板。此外,并非每个新的内容元素都需要所有字段。因此,在我看来,对于每一个新的内容元素,完全实现它更具可读性

例如:

$GLOBALS['TCA']['tt_content']['types']['alert'] = array(
    'showitem' => '
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
            --palette--;;general,
            --palette--;LLL:EXT:your_ext/Resources/Private/Language/backend.locallang.xlf:tt_content.alert.palettes.general.title;alert,
        --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,
            --palette--;;frames,
            --palette--;;appearanceLinks,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
            --palette--;;language,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
            --palette--;;hidden,
            --palette--;;access,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,
            rowDescription,
        --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
    ',
    'columnsOverrides' => [
        'bodytext' => [
            'config' => [
                'enableRichtext' => true
            ]
        ],
    ]
);
在本例中,我直接在核心调色板“general”之后加载自定义调色板。这也可以通过助手方法完成。我不喜欢:-)

你有其他的想法来简化这个吗

如前所述,使用助手方法或其他