MetaPalettes: Unterschied zwischen den Versionen

Aus Contao Community Documentation

(MetaPalettes::appendBefore(..) & MetaPalettes::appendAfter(..))
(MetaPalettes::appendBefore(..) & MetaPalettes::appendAfter(..))
Zeile 164: Zeile 164:
 
Die Methode <code>MetaPalettes::appendAfter(..)</code> verhält sich äquivalent zu <code>MetaPalettes::appendBefore(..)</code>, nur dass der Block nicht vor, sondern nach dem anderen Block eingefügt wird.
 
Die Methode <code>MetaPalettes::appendAfter(..)</code> verhält sich äquivalent zu <code>MetaPalettes::appendBefore(..)</code>, nur dass der Block nicht vor, sondern nach dem anderen Block eingefügt wird.
 
{{Hinweis|Sollte der Block vor oder nach dem eingefügt werden soll nicht gefunden werden, wird die Palette am Ende hinzugefügt (wie bei <code>MetaPalettes::appendTo(..)</code>)}}
 
{{Hinweis|Sollte der Block vor oder nach dem eingefügt werden soll nicht gefunden werden, wird die Palette am Ende hinzugefügt (wie bei <code>MetaPalettes::appendTo(..)</code>)}}
 +
 +
==MetaPalettes::appendFields(..) & MetaPalettes::prependFields(..)==
 +
 +
Fügt eine Felder am Anfang oder Ende eines Blocks hinzu.
 +
 +
<source lang="php">
 +
MetaPalettes::appendFields('tl_settings', 'title', array(
 +
  array('my_custom_field1', 'my_custom_field2', 'my_custom_field3')
 +
));
 +
</source>
 +
Fügt dem Block '''title_legend''' der '''default''' Palette die Felder '''my_custom_field1''', '''my_custom_field2''' und '''my_custom_field3''' hinzu.
 +
 +
Wenn eine andere Palette gewünscht ist, kann diese als 2. Parameter angegeben werden.
 +
<source lang="php">
 +
MetaPalettes::prependFields('tl_content', 'text', 'title', array(
 +
  array('my_custom_field1', 'my_custom_field2', 'my_custom_field3')
 +
));
 +
</source>
 +
Fügt dem Block '''title_legend''' der '''text''' Palette die Felder '''my_custom_field1''', '''my_custom_field2''' und '''my_custom_field3''' am Anfang hinzu.

Version vom 15. März 2012, 12:25 Uhr

Mit der Erweiterung MetaPalettes lassen sich die DCA Paletten in einem Array, statt einem String definieren. Dadurch wird es einfacher die Paletten später zu verändern.

Erweiterungs-Übersicht
Name des Entwicklers Tristan Lins
Version der Erweiterung 1.0.0
Kompatibilität mit Contao Version 2.9+ (potentiell kompatibel mit 2.8.3+, weil da der loadDataContainer Hook hinzugefügt wurde)
Link zum Extension Repository http://www.contao.org/erweiterungsliste/view/metapalettes.de.html


MetaPalettes generiert aus einem Mehrdimensionalen-Array das im DCA festgelegt wird die Haupt- und Unterpaletten.

Anwendungsbeispiel

Beispiel für eine MetaPalette aus der Erweiterung htaccess:

/**
 * DCA tl_htaccess
 */
$GLOBALS['TL_DCA']['tl_htaccess'] = array
(
...
  // meta pallettes
  'metapalettes' => array
  (
    'default' => array
    (
      'htaccess_settings' => array(':hide', 'htaccess_load_settings'),
      'htaccess_base'     => array('htaccess_template'),
      'htaccess_etag'     => array('htaccess_etag_disable'),
      'htaccess_mime'     => array('htaccess_mime_types'),
      'htaccess_deflate'  => array('htaccess_deflate_files'),
      'htaccess_headers'  => array(),
      'htaccess_expires'  => array('htaccess_expires_default', 'htaccess_expires'),
      'htaccess_custom'   => array('htaccess_custom'),
      'htaccess_rewrite'  => array('htaccess_rewrite_rules', 'htaccess_rewrite_prepend_www', 'htaccess_rewrite_remove_www', 'htaccess_rewrite_gzip', 'htaccess_rewrite_suffix'),
      'htaccess_h5bp'     => array('htaccess_h5bp_ie_x_ua_compatible', 'htaccess_h5bp_cross_domain_ajax', 'htaccess_h5bp_concatenation_include', 'htaccess_h5bp_ie_flicker_fix')
    )
  ),
...
);

Anstelle einer palette wird ein Feld metapalette definiert. Die Schlüssel für das Array definieren wie gewohnt die Palette, jedoch werden die einzelnen Abschnitte mit den Feldern nicht als Zeichenkette, sondern als Array definiert. Der Schlüssel aus dem Meta Array beschreibt den Abschnitt, darunter kommt wiederum als Array die Felder.

Paletten definieren

Am besten zeigt sich der Zusammenhang an einem kleinen Beispiel:

$GLOBALS['TL_DCA']['tl_example'] = array
(
...
  'metapalettes' => array
  (
    'default' => array
    (
      'chapter_one' => array('field_one', 'field_two'),
      'chapter_two' => array(':hide', 'field_three')
    )
  )
...
);

Daraus wird:

$GLOBALS['TL_DCA']['tl_example'] = array
(
...
  'palettes' => array
  (
    'default' => '{chapter_one_legend},field_one,field_two;{chapter_two_legend:hide},field_three'
  )
...
);

Der Array Key definieren jeweils die Legende für den Abschnitt, das _legend wird dabei automatisch hinzugefügt.

:hide und andere Modifikatoren

Eine Palette kann versteckt angezeigt werden, wie oben chapter_two: {chapter_two_legend:hide}. Dazu muss einfach das Schlüsselwort :hide in das Felder-Array hinzugefügt werden. MetaPalettes betrachtet alle mit : beginnenden Felder als Modifikatoren, diese werden aus der Feldliste extrahiert. Zur Zeit wird aber nur das Schlüsselwort :hide unterstützt.

Subpaletten definieren

Auch Subpaletten lassen sich definieren:

$GLOBALS['TL_DCA']['tl_example'] = array
(
...
  'metasubpalettes' => array
  (
    'field_three' => array('field_four', 'field_five')
  )
...
);

Daraus wird:

$GLOBALS['TL_DCA']['tl_example'] = array
(
...
  'palettes' => array
  (
    '__selector__' => array('field_three'),
    ...
  ),
 
  'subpalettes' => array
  (
    'field_three' => 'field_four,field_five'
  )
...
);

Das __selector__ Array wird automatisch gefüllt, es ist also nicht mehr notwendig dieses Array von Hand zu befüllen.

Paletten ergänzen

Ab Version 1.1 kann man vorhandene Paletten ganz einfach ergänzen. Dazu stehen 3 statische Methoden zur Verfügung.

MetaPalettes::appendTo(..)

Fügt eine Meta Palette am Ende hinzu.

MetaPalettes::appendTo('tl_settings', array(
  'my_custom_settings' => array(':hide', 'my_custom_field1', 'my_custom_field2', 'my_custom_field3')
));

Fügt den Block my_custom_settings am Ende der default Palette von tl_settings hinzu.

Wenn eine andere Palette gewünscht ist, kann diese als 2. Parameter angegeben werden.

MetaPalettes::appendTo('tl_content', 'text', array(
  'my_custom_settings' => array(':hide', 'my_custom_field1', 'my_custom_field2', 'my_custom_field3')
));

Fügt den Block my_custom_settings am Ende der text Palette von tl_content hinzu.

MetaPalettes::appendBefore(..) & MetaPalettes::appendAfter(..)

Fügt eine Meta Palette vor oder nach einem Block ein.

MetaPalettes::appendBefore('tl_settings', 'title', array(
  'my_custom_settings' => array(':hide', 'my_custom_field1', 'my_custom_field2', 'my_custom_field3')
));

Fügt den Block my_custom_settings vor den Block title_legend der default Palette von tl_settings hinzu.

Wenn eine andere Palette gewünscht ist, kann diese als 3. Parameter angegeben werden.

MetaPalettes::appendBefore('tl_content', 'published', 'text', array(
  'my_custom_settings' => array(':hide', 'my_custom_field1', 'my_custom_field2', 'my_custom_field3')
));

Fügt den Block my_custom_settings vor den Block published_legend der text Palette von tl_content hinzu.

Die Methode MetaPalettes::appendAfter(..) verhält sich äquivalent zu MetaPalettes::appendBefore(..), nur dass der Block nicht vor, sondern nach dem anderen Block eingefügt wird.

Hinweis.png Hinweis: Sollte der Block vor oder nach dem eingefügt werden soll nicht gefunden werden, wird die Palette am Ende hinzugefügt (wie bei MetaPalettes::appendTo(..))


MetaPalettes::appendFields(..) & MetaPalettes::prependFields(..)

Fügt eine Felder am Anfang oder Ende eines Blocks hinzu.

MetaPalettes::appendFields('tl_settings', 'title', array(
  array('my_custom_field1', 'my_custom_field2', 'my_custom_field3')
));

Fügt dem Block title_legend der default Palette die Felder my_custom_field1, my_custom_field2 und my_custom_field3 hinzu.

Wenn eine andere Palette gewünscht ist, kann diese als 2. Parameter angegeben werden.

MetaPalettes::prependFields('tl_content', 'text', 'title', array(
  array('my_custom_field1', 'my_custom_field2', 'my_custom_field3')
));

Fügt dem Block title_legend der text Palette die Felder my_custom_field1, my_custom_field2 und my_custom_field3 am Anfang hinzu.

Ansichten
Meine Werkzeuge

Contao Community Documentation

Ich überlege gerade warum Contao Developer einen Hangout mit Bildübertragung machen... abgesehen von TheTril sind wir da alle relativ hässliche Typen wo Audio deutlich reichen würde. *g*

Leo Unglaub
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge