[3302 Aufrufe]

2.1 Eine eigene Seite für das Backend erstellen

Dies ist der erste Beitrag, in dem wir produktiv Code erstellen. Anfangen möchte ich gerne mit einer einfachen Hilfeseite für das Backend. Es wird einen Menüpunkt geben, der die Seite aufruft. Die Seite zeigt einfach ein Inhalt eines Templates an.

Ich gehe ab jetzt davon aus, dass die Entwicklungsumgebung eingerichtet und Contao installiert ist. Des Weiteren werde ich nicht mehr speziell auf die Einrichtung der Erweiterung eingehen, dies wurde in den Texten des ersten Kapitels ausgiebig behandelt.

Alle Pfadangaben beziehen sich auf das Wurzelverzeichnis der Installation.

Auch hier noch einmal der Hinweis: das Ctocb ist mein Vendor-Namespace. Ihr müsst dies bitte durch Euren eigenen Namespacce ersetzen. Dies kann ein Bezeichner für Eure Firma oder Euren Namen sind. Bitte NICHT Ctocb verwenden! Danke! (Wo auch immer Ctocb in einem Namen, Namespace oder Ordner steht, dies bitte durch Euren eingnen Namespace oder Pfad ersetzten.)

Listing der Dateien

Wir werden im folgenden einige Ordner und Dateien anlegen. Zum besseren Verständnis hier ein Listing, wie die Erweiterung am Schluss aussehen soll.

src
└── Ctocb
    └── Example
        ├── Classes
        │   └── Contao
        │       ├── Backend
        │       │   └── HelpPage.php
        │       └── Manager
        │           └── Plugin.php
        ├── Resources
        │   └── contao
        │       ├── config
        │       │   └── config.php
        │       ├── languages
        │       │   └── de
        │       │       └── modules.php
        │       └── templates
        │           └── be_my_help_page.html5
        ├── composer.json
        └── CtocbExampleBundle.php

Template

Als Erstes legen wir das Template mit dem Inhalt an. Bei mir heißt es be_my_help_page.html5. Es wird unter /src/Ctocb/Example/Resources/contao/templates/ innerhalb unserer Erweiterung gespeichert. Testweise fügen wir folgenden Inhalt ein:

<div class="block">

    <h2>Hilfeseite</h2>

    <p>
        Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in 
        Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und 
        versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. 
        Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben.
    </p>

    <p>
        Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik. Der große 
        Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen 
        ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg. Als es 
        die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, 
        die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rhetorische Frage über die 
        Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie
    </p>
</div>

Ausgabeklasse

Nun benötigen wir eine Klasse, die sich um die Ausgabe des Templates kümmert. Diese kann einen beliebigen Namen haben, muss aber über eine generate-Methode verfügen. Wir legen also die Datei /src/Ctocb/Example/Classes/Contao/Backend/HelpPage.php an.

<?php declare(strict_types=1);

namespace Ctocb\Example\Classes\Contao\Backend;

use Contao\BackendTemplate;

class HelpPage
{
    protected $templateName = 'be_my_help_page';

    public function generate(): string
    {
        $template = new BackendTemplate($this->templateName);

        return $template->parse();
    }
}

In Zeile 9 steht der Name unseres Templates und in Zeile 11 beginnt unsere Methode für die Ausgabe. In Zeile 13 erstellen wir eine Instanz von \Contao\BackendTemplate und erstellen in 15 die Ausgabe.

Konfiguration

Damit unsere Klasse von Contao gefunden wird, müssen wir sie in die Datei /src/Ctocb/Example/Resources/contao/config/config.php eintragen.

<?php declare(strict_types=1);

$GLOBALS['BE_MOD']['module_test_group']['module_test_item'] = [
    'callback' => \Ctocb\Example\Classes\Contao\Backend\HelpPage::class
];

Wir nutzen hier den callback, der beim Anklicken des Menüpunkts ausgeführt wird. Wir benötigen weder Tabellen noch andere Einstellungen, da wir ja nur das Template ausgeben wollen.

Übersetzung

Da unser Menüpunkt auch einen gut lesbaren Namen tragen soll, fügen wir noch eine Übersetzung hinzu. Wir erstellen also die Sprachdatei /src/Ctocb/Example/Resources/contao/languages/de/modules.php.

<?php declare(strict_types=1);

// Kategorie
$GLOBALS['TL_LANG']['MOD']['module_test_group'] = ['Hilfe', 'Hilfe'];

// Eintrag
$GLOBALS['TL_LANG']['MOD']['module_test_item']  = ['Hilfe anzeigen', 'Hilfe anzeigen'];

Fertig

Da wir die Konfiguration geändert haben müssen wir den Cache leeren. Wir geben einfach auf der Kommandozeile im Wurzelverzeichnis der Installation den folgenden Befehl ein:

vendor/bin/contao-console cache:clear

Fertig, nun sollte unsere Hilfeseite im Backend zu sehen sein und ungefähr so aussehen:

Hilfeseite im Backend