Zitat von
mandrake
Vielleicht kannst Du zur Vervollständigung noch die passende Einschränkung für das "CE Image" posten?
Das ist nicht ganz so trivial und kann es daher auch nicht aus dem FF posten. Du musst dir für tl_content einen Load Callback machen, dort überprüfen ob $dc->activeRecord->type == 'image' ist und dann $GLOBALS['TL_DCA']['tl_content']['fields']['size']['options'] dementsprechend verändern bzw. überschreiben.
Zitat von
mandrake
01: Wie kann die Angabe von "Bildbreite und Bildhöhe" global für alle CE als Pflichtfeld deklariert werden?
PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['fields']['size']['eval']['mandatory'] = true;
Zitat von
mandrake
02: Wie kann die Angabe von "Bildbreite und Bildhöhe" nur für das "CE Image" als Pflichtfeld deklariert werden?
Da musst du dir auch wieder einen Load Callback machen, dort überprüfen ob $dc->activeRecord->type == 'image' ist und dann
PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['fields']['size']['eval']['mandatory'] = true;
setzen.
Zitat von
mandrake
03: Warum muss der o.g. Eintrag eigentlich in der "initconfig.php" und nicht der "dcaconfig.php" gemacht werden?
In der dcaconfig.php ist es zu spät - falls du die Bildgrößen für alle Elemente ändern willst und daher direkt das $GLOBALS['TL_CROP'] array ändern möchtest. Sieh' dir mal die DCA Definition des 'size' fields an:
PHP-Code:
'size' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_content']['size'],
'exclude' => true,
'inputType' => 'imageSize',
'options' => System::getImageSizes(),
'reference' => &$GLOBALS['TL_LANG']['MSC'],
'eval' => array('rgxp'=>'natural', 'includeBlankOption'=>true, 'nospace'=>true, 'helpwizard'=>true, 'tl_class'=>'w50'),
'sql' => "varchar(64) NOT NULL default ''"
),
Mit System::getImageSizes() wird das options array erzeugt. Diese Funktion holt sich alle Bildgrößen aus der Datenbank (in Contao 3.4) und merged es mit den einträgen aus $GLOBALS['TL_CROP'] (in Contao 3.2 wird direkt $GLOBALS['TL_CROP'] dorthin kopiert). Wenn du in der dcaconfig.php, welche nach allen anderen DCAs ausgeführt wird, das $GLOBALS['TL_CROP'] array änderst, hat dies natürlich keine Auswirkung mehr. Du kannst aber in der dcaconfig.php nach wie vor zB nur für Inhaltselemente die Optionen von $GLOBALS['TL_DCA']['tl_content']['fields']['size']['options'] ändern. zB
PHP-Code:
$GLOBALS['TL_DCA']['tl_content']['fields']['size']['options'] = array
(
'relative' => array
(
'proportional', 'box'
),
'exact' => array
(
'crop',
'left_top', 'center_top', 'right_top',
'left_center', 'center_center', 'right_center',
'left_bottom', 'center_bottom', 'right_bottom'
)
);