【问题标题】:Typo3 TCA override tt_content add palette to existing tab (--div--)Typo3 TCA 覆盖 tt_content 将调色板添加到现有选项卡 (--div--)
【发布时间】:2020-12-04 09:13:53
【问题描述】:

我尝试在现有选项卡“常规”下的 tt_content 表中添加一个调色板。 这是我的 tt_conten.php 文件。

<?php
defined('TYPO3_MODE') or die();

// Feld definieren
$tempColumns = [
 'tx_imagetext_color' => [
 'label' => 'color',
 'exclude' => 0,
 'config' => [
 'type' => 'input',
 'eval' => 'trim',
 ]
 ],
 'tx_imagetext_image' => [
 'label' => 'image',
    'config' => [
    'type' => 'select',
    'renderType' => 'selectSingle',
    'special' => 'languages',
    'items' => [
        [
        'LLL:EXT:lang/locallang_general.xlf:LGL.allLanguages',
        -1,
        'flags-multiple'
        ]
    ],
    'default' => 0,
    ],
 ]
];

// Feld der allgemeinen Datensatzbeschreibung hinzufügen - noch keine Ausgabe im Backend!
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tt_content', $tempColumns);

// Feld einer neuen Palette hinzufügen
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
        'tt_content',
        'imagetext',
        'tx_imagetext_color, tx_imagetext_image'
        );

// Neue Palette dem Tag hinzufügen, nach dem Titel - Dadurch Anzeige im Backend
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
 'tt_content',
 '--div--;general,
 --palette--;;imagetext',
 '',
 ''
); 

Typo3 在最后用正确的调色板创建了一个新的将军。 但我希望调色板应该出现在已经存在的标签 General 中。

我怎样才能做到这一点?

【问题讨论】:

  • 我试过这样:addToAllTCAtypes('tt_content', 'general', '','after:bodytext')

标签: typo3 typo3-9.x


【解决方案1】:

--div--;general 显式创建一个名为“general”的新选项卡。

如果您只希望新调色板出现在“常规”选项卡中的某个其他字段之后,您只需将该字段指定为 addToAllTCAtype 函数的最后一个参数。当您编写“nach dem Titel”时,我假设您希望它出现在标题字段之后。以下在 TYPO3 10 中对我有用,但我认为在 v. 9.5.xx 中应该是一样的

// Neue Palette hinzufügen, nach dem Titel - Dadurch Anzeige im Backend
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
    'tt_content',
    '--palette--;;imagetext',
    '',
    'after:header'
);

多一点解释

addToAllTCAtypes 接受四个参数:

  1. 参数:要为其添加字段的表格
  2. 参数:新字段(或在您的情况下为调色板)
  3. 参数:要添加此字段的类型列表(在您的情况下 空,因为您希望该字段出现在所有类型中,我假设)
  4. 参数:添加字段的位置。可以是“before:fieldname”、“after:fieldname”或“replace:fieldname”)

【讨论】:

  • 谢谢,工作正常。我还有一些额外的问题:我在想,如果我在 --palette 之后加上一个名字,这将作为调色板标题,但什么都没有出现。如果我的扩展被选中,是否也可以添加这个调色板?
  • 如果解决方案对您有用,您介意将其标记为已接受的答案吗?至于您的其他问题:在两者之间添加调色板的名称;;在您的调色板中包含应该正常工作,是的。 --palette--;Your Palette Name here;imagetext'。至于你的第二个问题,“如果我的分机被选中”是什么意思?你的意思是如果用户试图插入一个由你的扩展添加的 CType 元素?
  • 抱歉耽搁了。如果我在页面中打开新内容,我总是会看到调色板。但只有在使用相关插件时才需要查看调色板。这可能吗$
  • 作为 addToAllTCAtypes 中的第三个参数,您可以选择定义此调色板应显示的内容类型,例如'textmedia' 或逗号分隔列表中的多个类型。例如。 '文本媒体,图像'。
  • 我的扩展的 CType 是 list 和 list_type album_showalbum。我必须用作第三个参数$
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
相关资源
最近更新 更多