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: