Soeben habe ich erfolgreich getestet, dass du ebenso die "disabled" Eigenschaft setzen könntest:
// Zu entfernende Crop-Varianten
$removeCropVariants = ['xlarge', 'large', 'medium', 'small', 'extrasmall'];
// Durchlaufe jede Crop-Variante in der Liste.
foreach ($removeCropVariants as $removeCropVariant) {
// Entferne die spezifizierten Crop-Varianten aus den globalen TCA-Konfigurationen für verschiedene Inhaltselemente.
// Für 'tt_content' Elemente.
$GLOBALS['TCA']['tt_content']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
$GLOBALS['TCA']['tt_content']['types']['image']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
$GLOBALS['TCA']['tt_content']['types']['textpic']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
$GLOBALS['TCA']['tt_content']['types']['media']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
$GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
// Für 'bootstrap_package' Extension-Elemente.
$GLOBALS['TCA']['tx_bootstrappackage_card_group_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
$GLOBALS['TCA']['tx_bootstrappackage_accordion_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['background_image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
$GLOBALS['TCA']['tx_bootstrappackage_carousel_item']['columns']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
$GLOBALS['TCA']['tx_bootstrappackage_tab_item']['types']['1']['columnsOverrides']['media']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
$GLOBALS['TCA']['tx_bootstrappackage_timeline_item']['types']['1']['columnsOverrides']['image']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
// Entferne die Crop-Varianten für die Seitenkonfigurationen separat.
foreach ([1, 3, 4] as $type) {
$GLOBALS['TCA']['pages']['types'][$type]['columnsOverrides']['thumbnail']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'][$removeCropVariant]['disabled'] = true;
}
}
Es handelte sich bei deinem Code einfach noch um die falsche Schreibweise, da du mit
$GLOBALS['TCA']['tt_content']['types']['textmedia']['columnsOverrides']['assets']['config']['overrideChildTca']['columns']['crop']['config']['cropVariants'] =
das komplette 'cropVariants'
-Array überschreibst und nicht nur einen Wert ergänzt. Wenn du zwei Arrays rekursiv miteinander zusammenführen magst kannst du dir auch mal die Funktion \TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule
ansehen. Im aktuellen Use-Case würde das mit dieser Funktion aufgrund der stark verschachtelten Strukturen aber eher unübersichtlicher werden als das Array jeweils voll auszuschreiben.
Das würde dann so aussehen:
foreach ($removeCropVariants as $removeCropVariant) {
\TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule(
$GLOBALS['TCA'],
[
'tt_content' => [
'columns' => [
'background_image' => [
'config' => [
'overrideChildTca' => [
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
$removeCropVariant => [
'disabled' => true
]
]
]
]
]
]
]
]
],
'types' => [
'image' => [
'columnsOverrides' => [
'image' => [
'config' => [
'overrideChildTca' => [
'columns' => [
'crop' => [
'config' => [
'cropVariants' => [
$removeCropVariant => [
'disabled' => true
]
]
]
]
]
]
]
]
]
],
// ... und so weiter 😆 ..
]
]
]
);
}