我在typo3版本的
images only
和images and text
内容元素上进行了图像处理设置。它显示不同的图像格式,如下所示。
现在我想添加一个选择下拉列表,可以选择四种图像格式之一并将其保存在数据库中。我成功地在 tt_content 表中创建了一个选择下拉列表和一个新列。这些值正在数据库中更新。尽管如此,我可以将选择下拉列表放置在内容元素的“常规”或“访问”选项卡中
我的问题是,由于某种原因,我无法使选择下拉列表出现在“图像”选项卡中。有人可以指导我为什么在下面的代码中用“常规”替换“图像”不起作用吗?
我的代码:
$temporaryColumn = array(
'image_format' => array (
'exclude' => 0,
'label' => 'Image format',
'config' => [
'type' => 'select',
'renderType' => 'selectSingle',
'items' => [
['Default',0,],
['Quadrat',1,],
['Landscape',2,],
['Portrait',3,],
['Teaser',4,],
],
'size' => 1,
'maxitems' => 1,
]
)
);
$table = 'tt_content';
$column = 'image_format';
$GLOBALS['TCA'][$table]['columns'][$column] = $temporaryColumn;
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns(
'tt_content',
$temporaryColumn
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
'tt_content',
'general',
'image_format',
);
您正在呼叫
addFieldsToPalette()
。因此,您将字段放入palette中,而不是直接放入选项卡中。这就是为什么您必须使用现有 palette 的标识符作为第二个参数。
tt_content
有以下调色板:
如您所见,有“常规”和“访问”调色板(在具有相同名称的选项卡旁边)。但不存在调色板“图像”。
选择一个现有调色板并通过
ExtensionManagementUtility::addFieldsToPalette()
添加新字段:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addFieldsToPalette(
'tt_content',
'mediaAdjustments',
'image_format',
);
这可以通过将该字段放置在相应
showitem
的 type
列表中的特定位置来完成。最简单的方法是使用 ExtensionManagementUtility::addToAllTCAtypes()
:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'tt_content',
'image_format',
'',
'before:image'
);