Entwicklung & Design

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

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Schreib den ersten Kommentar!

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!

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