Artikel
von Patrick Froch

Nach dem im letzten Artikel eine kleine Produktdatenbank aufgebaut wurde, wird es nun Zeit, die Daten auch im Frontend anzuzeigen. In diesem Artikel soll deshalb ein Inhaltselement für die Anzeige der Produkte erstellt werden. Im Prinzip funktioniert es genau so, wie im Artikel "Contao: Ein eigenes Inhaltselement" beschreiben. Der einzige Unterschied ist, dass die Daten nun nicht mehr direkt aus dem Inhaltselement kommen, sondern aus der Produktdatenbank geladen werden müssen.

Ordnerstruktur

Da wir die Produktdatenbank aus dem letzten Artikel erweitern beginnen wir auch mit der gleichen Dateistruktur. (Die Dateien aus dem letzten Artikel werden natürlich weiterhin benötigt!)

Wir erweitern die vorhandenen Ordner um die Verzeichnisse classes und templates.

Config

Damit unsere Inhaltselement in Contao zur Verfügung steht, ergänzen wir die Datei config/config.php.

DCA

Im Artikel "Contao: Ein eigenes Inhaltselement" wurde das DCA der Tabelle tl_content um die Felder für die Produktdaten erweitert. Da diese Daten jetzt in einer eigenen Tabelle gepflegt werden, sind diesmal keine Änderungen am DCA nötig. Damit aber wenigstens die Standard-Contao-Felder angezeigt werden, erstellen wir trotzdem eins. Wir legen die Datei dca/tl_content.php mit folgendem Inhalt an:

Languages

Wir erstellen nun die Datei languages/de/default.php, um unserem Inhaltselement in der Auswahlbox für den Typ einen schönen Titel zu verpassen.

Autoload

Damit unsere Klasse für das Inhaltselement auch angespreochen werden kann, legen wir die Datei config/autoload.php mit einem entsprechenden Eintrag an. Wenn wir schon dabei sind, fügen wir auch noch einen Eintrag für das Templte hinzu. Beides erstellen wir gleich.

Die Ausgabeklasse

Nun kommt das Herzstück unseres Inhaltselements, die Klasse für die Ausgabe. Die Datei heißt in diesem Fall classes/elements/ContentProduct.php.

In Zeile 46 rufen wir die Methode für das Laden der Produkte auf. Wenn diese ein Ergebnis liefert, wird es in Zeile 49 an das Template übergeben. Das Laden der Einträge geschieht in den Zeilen 60-62. Der Einfachheit halber habe ich hier die Datenbankklasse von Contao verwendet. Auf das Erstellen eines Models verzeichte ich in diesem Artikel erst einmal. Nun können wir im Template auf die Produktdaten zugreifen.

Template

Wir erstellen die Datei templates/ce_product.html5

Nun wird eine Liste unserer Produkte ausgegeben. Die Eigenschaften stehen in den Zeilen 12, 16 und 20. Die Ausgabe kann leicht um weitere Details erweitert werden. Es müssen nur neue Felder in DCA eingefügt und dann über das Template ausgegeben werden. Die Klasse selber muss nicht mehr angepasst werden, da wir einfach alle Daten der Produkte an das Template übergeben. Wenn man ganz geschickt sein will, kann man auch ins Inhaltselement eine Auswahl der Felder einfügen. So könnte dort entschieden werden, welche Daten ausgegeben werden und in welcher Reihenfolge. Aber dazu komme ich vielleicht in einem spätere Artikel.

Zurück

Kommentare

Aufgrund der unklaren Rechtslage durch die DSGV habe ich mich entschlossen, die Kommentare bis auf Weiteres zu deaktivieren.