Ich hatte das Problem heute auch und habe hier eine Lösung.
In meinem Fall muss nur der Admin alle Bereiche sehen, alle anderen Nicht-Admins bekommen nur 2 Layoutbereiche serviert. Das Script kann natürlich auch so angepasst werden, dass Gruppen gezielt beeinflusst werden können (z.B. mit 'else if' oder mit dem unteren Schnipsel als Standalone-Lösung), wer einen Funken von php versteht, bekommt das schon hin.
Ach ja, das Ganze kommt wie befürchtet in die dcaconfig.php (system/config/dcaconfig.php).
Code:
<?php
/*
GRUPPEN NUR BESTIMMTE LAYOUTBEREICHE ZUR AUSWAHL GEBEN
Original in system/modules/backend/dca/tl_article.php:
$GLOBALS['TL_DCA']['tl_article']['fields']['inColumn']['options_callback'] = array('tl_article', 'getActivePageSections');
ACHTUNG: keine Leerzeile(n) nach der letzten Zeile "?>", sonst gibts Whitescreen wenn im BE gespeichert wird
*/
if ( $this->User->isAdmin ) {
/* Admin sieht alle Bereiche, bekommt hier aber Auswahlwert voreingestellt */
$GLOBALS['TL_DCA']['tl_article']['fields']['inColumn']['default'] = 'Layoutbereich 1'; /* voreingestellter Wert */
} else {
/* alle anderen User (Redakteure) bekommen nur bestimmte Layoutbereiche zur Auswahl */
$newArrSections = array();
$newArrSections[] = 'Layoutbereich 1'; /* so wird dem Array ein Wert hinzugefuegt... */
$newArrSections[] = 'Layoutbereich 2'; /* ... und hier kommt noch ein weiterer, u.s.w., kann beliebig so weitergehen */
$GLOBALS['TL_DCA']['tl_article']['fields']['inColumn']['options_callback'] = ''; /* normale Anzeigewerte zuruecksetzen... */
$GLOBALS['TL_DCA']['tl_article']['fields']['inColumn']['options'] = $newArrSections; /* ... und mit eigenen Werten beschreiben */
$GLOBALS['TL_DCA']['tl_article']['fields']['inColumn']['default'] = 'Layoutbereich 1'; /* voreingestellter Wert */
}
/*
Oder nur fuer spezielle Gruppen - in diesem Fall 'User der Gruppe mit der ID 1':
if ($this->User->isMemberOf(1)) {
$newArrSections = array();
$newArrSections[] = 'Layoutbereich 1';
$newArrSections[] = 'Layoutbereich 2';
$GLOBALS['TL_DCA']['tl_article']['fields']['inColumn']['options_callback'] = '';
$GLOBALS['TL_DCA']['tl_article']['fields']['inColumn']['options'] = $newArrSections;
$GLOBALS['TL_DCA']['tl_article']['fields']['inColumn']['default'] = 'Layoutbereich 1';
}
*/
?>
Viel Erfolg
Lesezeichen