4. Januar 2010 in TYPO3 by Leo

Nach meiner kleinen, aller ersten “Extension”  (Klick), habe ich vor kurzem nun eine richtige Extension erstellt. Und zwar habe ich in einem kürzlichen Projekt mit meinem Lehrmeister und teilweise der Hilfe von anderen eine erste “wirkliche” Extension erstellt. Die Extension nennt sich Testimonials und kann hier aufgefunden werden (siehe rechte Seite).
Die Extension zeigt zufällig eine der im backend ausgewählten Personen aus und zeigt sie an. Dabei wird der Name, Titel, sowie das Bild etc. aus der Personen Datenbank genommen.
Geschrieben ist die Extension extra für dieses Projekt und befindet sich bisher nur dort im Einsatz.

Angefangen haben wir wieder mit Kickstarter, um die einfachen Felder für die Eingabe im Backend zu erstellen. Danach mussten wir jedoch noch einiges mit PHP, HTML, sowie CSS anpassen, damit die Extension schlussendlich so aussah, wie es sich der Kunde gewünscht hat.
Die Extension ist in 2 Sprachen verfügbar, deutsch und englisch. Hierbei wird einfach jeweils die englische Übersetzung des Feldes aus einem XML File genommen, in welchem dies alles abgespeichert ist.

Nach dem Break erfahrt ihr noch alles im Detail.

Erklärung

Mit PHP habe ich die Daten, die natürlich von Person zu Person unterschiedlich sind, aus der Personen Datenbank genommen, und in die Testimonials eingefügt. Das ganze funktioniert natürlich mit allen Personen, solange sie in der PersDB vorhanden sind, sowie die benötigten Felder ausgefüllt wurden.
Da ich ein PHP-Neuling bin, hat mich mein Lehrmeister Markus bei all dem Unterstützt.
Die Testimonials werden mit folgender PHP Zeile ausgelesen:

$sql = 'SELECT * FROM tx_x4etestimonial_items WHERE 1 '.$this->cObj->enableFields('tx_x4etestimonial_items').$addWhere.' LIMIT 1';

Die Reihenfolge in der die Personen angezeigt werden läuft nach dem Zufallsprinzip und wechselt wenn man die Seite aktualisiert, erzeugt wird dies in PHP mit ‘random’.

$addWhere .= ' ORDER BY RAND()';

Angezeigt wird jedoch immer nur eine Person.

Die PHP Variablen habe ich danach in HTML eingesetzt, damit sie danach auf der Homepage ausgegeben werden. Dazu haben wir das Rautenzeichen ‘#’ verwendet. Dies hat danach so ausgesehen:

###FirstName###
<!-- ###firstnameBox### -->###firstname###<!-- ###firstnameBox### -->

Diese Variable wird dann durch das Feld ‘FirstName’ aus der Datenbank ersetzt, also den Vornamen der aktuellen Person, welcher vorher über das Backend eingetragen wurde. Das ganze nennt sich ein ‘Marker’.
Der Marker, welcher im HTML Template eingesetzt wird, bestimmt was vor und nach dem Feldnamen im HTML File kommt, dies sieht in PHP dann so aus:

$content = $this->cObj->substituteMarkerArray($tmpl,$mArr,'###|###');

Geladen wird das HTML Template über PHP mit:

$tmpl = $this->cObj->fileResource($this->conf['template']);

Da das HTML Template ein separates HTML File ist, musste natürlich noch der Pfad bestimmt werden.
Der Pfad welcher mit diesem Key verbunden ist, und zum HTML File führt, wird in TypoScript aufgeführt:

template = typo3conf/ext/x4etestimonial/pi1/templates/detail.html

Das CSS File wurde auch per TypoScript eingebaut, als zusätzliches CSS File, neben dem Standard File des aktuellen Designs.
Als alles soweit Funktionstüchtig war, musste das Aussehen der Extension noch der Vorlage angepasst werden, welche uns der Kunde gab. Das ganze musste gefloatet werden, damit zum Beispiel der Text neben dem Bild ist. Des weiteren mussten Schriftfarbe, Schriftgröße, und all die anderen üblichen Dinge angepasst werden. Probleme gab es dabei kaum, lediglich das floaten sowie das einfügen des kleinen Bildchen oben links waren mühsam.

Happy New Year :)