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

4 回答 4

3

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

$GLOBALS['TCA']['tt_content']['types']['my_custom_element']['columnsOverrides'] = array(
  'image' => array(
    'config' => array(
      'maxitems' => 1
    )
  )
);
于 2015-06-25T07:33:19.460 回答
1

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

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

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

例子

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

配置后端模块是一个很好的工具,可以通过查看其他人如何完成您想要的事情来学习和理解 TCA 和其他全局变量。

于 2016-07-06T15:30:37.177 回答
0

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

典型的解决方案是添加自定义图像字段,即。仅限 CE 类型my_image中的tt_content和替换原始字段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']);
于 2015-06-24T11:29:45.057 回答
0

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

$GLOBALS['TCA']['tt_content']['types']['myType']['columnsOverrides']['header']['config'] = 
    $GLOBALS['TCA']['tt_content']['columns']['header_link']['config'];
于 2016-06-18T13:34:54.407 回答