npostnik.de

Extension per XCLASS erweitern (tipafriend)

Bei fast jeder Extension findet man am Ende einen Abschnitt, der es ermöglicht diese Extension zu erweitern, bzw. die Funktionen für eigene Zwecke zu überschreiben. Das hat den Vorteil, dass man der eigentlichen Quellcode nicht ändert und so bei einem Update nichts überschrieben werden kann.
In einem kurzen Beispiel werde ich die Extension tip-a-friend erweitern, so dass einige ungünstige Fehler behoben werden.

Zunächst muss ein Ordner angelegt werden, dass die neue Extension beherbergen soll, diese soll np_tipafriend_ext heißen. Das _ext deutet darauf hin, dass die Extension eine Erweiterung ist, der Name der erweiterten Extension tipafriend steckt im Namen auch drin.
Dann öffnet man die Klassen-Datei der Extension, die man erweitern will und sucht ganz unten den Abschnitt mit der XCLASS. Bei tip-a-friend nämlich:


if (defined(‚TYPO3_MODE‘) && $TYPO3_CONF_VARS[TYPO3_MODE][‚XCLASS‘][‚ext/tipafriend/pi/class.tx_tipafriend.php‘]) {
include_once($TYPO3_CONF_VARS[TYPO3_MODE][‚XCLASS‘][‚ext/tipafriend/pi/class.tx_tipafriend.php‘]);
}

Um nun die neue Extension als Erweiterung der tip-a-friend in Typo3 zu registrieren, legt man im neuen Extension-Ordner die Datei ext_localconf.php an und schreibt dort folgendes hinein:


if (!defined (‚TYPO3_MODE‘)) die (‚Access denied.‘);

$TYPO3_CONF_VARS[‚FE‘][‚XCLASS‘][‚ext/tipafriend/pi/class.tx_tipafriend.php‘] = t3lib_extMgm::extPath($_EXTKEY).’class.ux_tx_tipafriend.php‘;

Der erste Teil entspricht dem Ausdruck entnommen aus der Tip-a-friend Klassen-Datei, der zweite gibt an, wie die Klasse der neuen Extension lautet. Dieser muss einem bestimmten Schema folgen: dem Klassennamen der zu erweiternden Extension wird ein ux_ vorgestellt! Falls der Klassenname tx_ahlinklist_pi1 lautet, dann ist die Erweiterung ux_tx_ahlinklist_pi1.

Dann legt man eine Datei an, die den mit ux_ beginnenden Dateinamen trägt. Direkt im Ordner der Extension gibt es nun einen Datei, die class.ux_tx_tipafriend.php heißt und (ohne Kommentarblock) folgenden Code enthält:


class ux_tx_tipafriend extends tx_tipafriend {
function main_tipafriend($content,$conf) {
return „HIER“;
}
}

Die Hauptfunktion der Tip-a-friend heißt nämlich main_tipafriend (bei den meisten Extensions einfach nur main), daher wird in der neuen Klasse die Funktion überschrieben und liefert „HIER“ zurück. Man kann die Funktionen der übergeordneten Klasse aufrufen mit parent::Funktionsname, das Ergebnis dann bearbeiten und zurückgeben.

Die mobile Version verlassen