e@sy Solutions IT

Eine eigene Aktion in eine Contao-Übersicht einfügen

Heute möchte ich zeigen, wie man eine eigene Aktion in eine Contao-Übersicht einfügt. Es wird eine neues Icon hinter die bestehenden eingefügt und mit einer eigenen Aktion verbunden. Ich erläutere dies am Beispiel einer PDF-Übersicht, die ich mir gebaut habe.

Es soll am Ende ungefähr so aussehen:

Contao-Übersicht mit PDF-Icon

Erster Schritt: dca

Zuerst wird im Ordner dca, in der Datei der Tabelle ("TABELLENENNAME".php) in der Rubrik list unter operations ein neuer Eintrag erzeugt: ( Für eine bessere Übersicht habe ich die Standardaktionen gekürzt.)

$GLOBALS['TL_DCA']['TABELLENNAME'] = array
(


    // Config
    'config' => array
    ( ... ),
	

    // List
    'list' => array
    ( ... ),
        'operations' => array
        (
            'edit' => array
            ( ... ),
            'copy' => array
            ( ... ),
            'delete' => array
            ( ... ),
            'show' => array
            ( ... ),
			'create' => array
			(
				'label'               => &$GLOBALS['TL_LANG']['TABELLENNAME']['create'],
				'href'                => 'key=create',
				'icon'                => 'system/modules/ORDNER_DER_ERWEITERUNG/html/PDF_file_acrobat.gif'
			)
        )
    ),

Unter 'href' wird der Parameter eingegeben, der die Aktion auslöst. In unterem Fall ist es 'key=create'. Wird also die Seite mit dem Parameter 'key=create' aufgerufen, wird unsere Aktion ausgeführt.

Schritt 2: config.php

Nun muss die Aktion bekannt gegeben werden. Dies geschieht in der Datei config.php im Verzeichnis config. Neben dem normalen Eintrag für das Menü ('tables' und 'icon') wird hier der Eintrag mit dem Namen unserer Aktion erstellt (das ist der Parameter aus der Datei dca.php). In unserem Fall create. Diesem wird ein Array mit dem Namen der Klasse ('datasheetPDF') und der Methode ('generate'), die beim Aufruf ausgeführt werden sollen übergeben.

    array_insert(
        $GLOBALS['BE_MOD'], 0, array(
            'ÜBERSCHRIFT' => array(
                'MENÜPUNKT' => array(
                    'icon'   => 'system/modules/ORDNER_DER_ERWEITERUNG/html/PDF_document_red.png',
                    'tables' => array('TABELLENNAME'),
                    'create' => array('datasheetPDF', 'generate')
                )
            )
        )
    );

Schritt 3: PHP-Klasse

Nun muss noch direkt im Ordner der Erweiterung eine Datei angelegt werden. Diese muss den Namen der Klasse tragen, den wir in Schritt 2 bekannt gegeben haben. Hier rein kommt die PHP-Klasse mit der Methode, die unsere Aktion ausführt, es können aber auch beliebige weitere Methoden enthalten sein. Man kann sich also die PHP-OOP zu Nutze machen. Es ist eine gute Idee, die Klasse je nach Aufgabe von einer Contao-Klasse abzuleiten (z.B.: von system). So kann man das Contao-Framework für seine Erweiterung nutzen, was die Arbeit erheblich erleichtert.

class datasheetPDF extends System {

  public function generate(){
       // Mach mir ein PDF!
  }
}

Beipielhafter Inhalt der Datei /ORDNER_DER_ERWEITERUNG/datasheetPDF.php.

Fertig!

Das Einbinden unserer Klassen-Datei erfolgt automatisch anhand des Dateinamens, so dass wir uns um nichts weiter kümmern müssen. Wenn wird nun in der Übersicht auf das neue Icon klicken, wird unsere Methode aufgerufen und die Aktion ausgeführt. Wenn man weiß wie es geht ist es gar nicht schwer.

Jetzt viel Spaß beim Ausprobieren und wenn es Euch gefallen hat, empfehlt mich weiter.

Kommentare