首页 文章

仅为自定义内容元素覆盖tt_content列

提问于
浏览
1

我创建了一个自定义内容元素而没有扩展tt_content列,因为数据库中的现有字段足以满足我的需要 .

我正在使用“header”,“header_link”和“image”但我需要“image”列在我的自定义内容元素中使用时具有不同的TCA配置 .

我可以全局更改配置:

$GLOBALS['TCA']['tt_content']['columns']['image']['config']['maxitems'] = 1;

但这不是我想要的 .

就像是

$GLOBALS['TCA']['tt_content']['my_custom_element']['columns']['image']['config']['maxitems'] = 1;

要么

$GLOBALS['TCA']['tt_content']['columns']['my_custom_element']['image']['config']['maxitems'] = 1;

不工作 .

有谁知道如何实现我想要的?谢谢! :-)

4 回答

  • 0

    它尚未记录,但以下代码适用于TYPO3 7.3

    $GLOBALS['TCA']['tt_content']['types']['my_custom_element']['columnsOverrides'] = array(
      'image' => array(
        'config' => array(
          'maxitems' => 1
        )
      )
    );
    
  • 2

    @dmnkhhn是对的 . 如果您的TYPO3 CMS版本更新或等于TYPO3 CMS 7.3,则以下是您的解决方案

    $GLOBALS['TCA']['tt_content']['types'][$myCType]['columnsOverrides']['images']['config']['maxitems'] = 1;
    

    请注意,您必须将新插件类型配置为ExtensionUtility :: PLUGIN_TYPE_CONTENT_ELEMENT才能使其正常工作 .

    示例

    看一下 Configuration 后端模块TCA部分并浏览到(折叠)tt_content / types / html / columnsOverrides,看看TYPO3核心如何处理HTML内容元素的bodytext字段的覆盖 .

    Configuration 后端模块是学习和理解TCA和其他全局变量的一个很好的工具,通过查看其他人已经完成了你想要的东西 .

  • 0

    列的TCA配置是某种最终的,这意味着它们被缓存一次,并且根据任何条件,不可能对一个字段使用不同的配置 .

    典型的解决方案是添加自定义图像字段即 . my_imagett_content 并仅替换CE类型中的原始 image 字段

    喜欢(样本):

    $GLOBALS['TCA']['tt_content']['types']['Tx_Your_Type']['showitem'] = $GLOBALS['TCA']['tt_content']['types']['image']['showitem'];
    $GLOBALS['TCA']['tt_content']['types']['Tx_Your_Type']['showitem'] = str_replace(',image ,', ',my_image ,', $GLOBALS['TCA']['tt_content']['types']['Tx_Your_Type']['showitem']);
    
  • 1

    使用另一列的配置覆盖字段,如下所示:

    $GLOBALS['TCA']['tt_content']['types']['myType']['columnsOverrides']['header']['config'] = 
        $GLOBALS['TCA']['tt_content']['columns']['header_link']['config'];
    

相关问题