t3n 17

Extensions flexibel und anpassbar entwickeln: Erweiterbare Erweiterungen

Jede Webseite ist anders – zumindest ein bisschen anders. Für ein neues Projekt wird daher aus der Fülle verfügbarer TYPO3-Extensions ein individuelles Paket geschnürt. Nicht selten ist es dabei notwendig, funktionale Änderungen in eine Extension einfließen zu lassen. Diese sind so individuell, dass eine Extension sie nicht allesamt abdecken kann und muss. Was kann ein Extension-Entwickler also tun, um sowohl gute Grundfunktionen als auch flexible Erweiterbarkeit zu gewährleisten?

Rund 4.000 Erweiterungen befinden sich im TYPO3 Extension Repository. Weit verbreitete Extensions zeichnen sich sehr oft durch gute Erweiterbarkeit aus.

Rund 4.000 Erweiterungen befinden sich im TYPO3 Extension Repository. Weit verbreitete Extensions zeichnen sich sehr oft durch gute Erweiterbarkeit aus.

Entwickler können TYPO3 auf verschiedenste Art und Weise erweitern. Neben klassischen Extensions stehen auch die Konfiguration via TypoScript, Hooks und das XCLASS-Verfahren zur Verfügung. Nachfolgend werden diese Wege näher beleuchtet.

Funktionalität auslagern

Mit TypoScript kann eine Extension über cObject-Konstrukte [1] mit ergänzenden oder alternativen Funktionen ausgestattet werden. Innerhalb eines Plugins, das in der Regel von der Klasse „tslib_pibase“ erbt, können zusätzliche cObjects verarbeitet werden.

TYPOSCRIPT – Plugin-Konfiguration

includeLibs.myfunc = fileadmin/scripts/user_myFunc.php
plugin.tx_my_pi1.finish = USER_INT
plugin.tx_my_pi1.finish { 
	userFunc = user_myFunc->sendMail
	mailTo = admin@example.com
}

Listing 1

Das entsprechende cObject wird in der Plugin-Konfiguration bestückt. USER_INT aus Listing 1 ermöglicht das nicht-gecachte Ausführen einer Funktion oder einer Klassenmethode. Es können natürlich auch die anderen cObject-Typen (CONTENT, COA, TEXT, MULTIMEDIA etc.) verwendet werden.

PHP – Plugin-Klasse, die ein cObject verwendet

class tx_my_pi1 extends tslib_pibase {
	function main($content, $conf) {
		if($conf['finish']) {
			$this->cObj->regObj = $this; // Referenz auf Plugin-Objekt
			$content = $this->cObj->cObjGetSingle($conf['finish'],$conf['finish.']);
		}
		return $content;
	}
}

Listing 2

Die Methode „cObjGetSingle“ der Oberklasse „tslib_pibase“ wird verwendet, um ein cObject „auszuführen“. USER-/USER_INT-Funktionen kann Zugriff auf den Plugin-Kontext gewährt werden. Der Rückgabewert ist stets eine Zeichenkette.

Bitte beachte unsere Community-Richtlinien

Schreib den ersten Kommentar!

Du musst angemeldet sein, um einen Kommentar schreiben zu können.

Jetzt anmelden

Hey du! Schön, dass du hier bist. 😊

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team bestehend aus 65 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Danke für deine Unterstützung.

Digitales High Five,
Stephan Dörner (Chefredakteur t3n.de) & das gesamte t3n-Team

Anleitung zur Deaktivierung