|
Donnerstag, 09. Okt 2008
How to: Eine Extension (hook) für TYPO3 programmierenVor ein paar Tage habe ich meine erste Extension (einen hook für comments) erfolgreich umgesetzt. Hier möchte ich die Vorgangsweise dafür erklären und beschreiben worauf man achten sollte.1. Den Extesion Kickstarter installieren Die Extension wird aus dem TER heruntergeladen und im Extension Manager installiert. Danach gibt es hier einen neuen Menüpunkt: "make new extension".
Ein wichtiger Tipp: Es wird empfohlen auf den Unterstrich "_" in der Namensgebung zu verzichten. Der Grund dafür ist, dass der Name für eine Extension zwar in Ordnung ist und er dadurch auch "lesbarer" wird, der Name der Extension als Klassennamen aber ohne Unterstrich auskommen muss. Heißt eure Extension zum Beispiel "simple_image_gallery", muss die Klasse der Extension "tx_simpleimagegallery" benannt werden. Macht man hier Fehler wird die Klasse nicht aufgerufen und die Extension funktioniert nicht. Klassennamen können als nicht willkürlich vergeben werden. Die Typo3 Engine ist hier sehr pingelig, ob die Namensgebung stimmt. Nachdem der Extension Key gewählt wurde mit "Update" bestätigen. Mit "View result" kann man sehen welche Dateien nun erzeugt werden könnten und mit "WRITE" werden die angezeigten Dateien erstmal erzeugt und unter "typo3conf/ext/name_der_extension" abgelegt.
Unter General Info
Danach wieder ein "Updaten" und ein "Write". Achtung alle Dateien mit einem kleinem Häckchen werden tatsächlich überschrieben. $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['comments']['processSubmission'][$_EXTKEY] = 'EXT:comments_email/pi1/class.tx_commentsemail_hooks.php:tx_commentsemail_hooks->hookFunc'; Woher ich das weiß? Aus der Anleitung der Extension comments! Hooks existieren im gesamten Typo3 Code und werden auch von Extension Programmierern gerne zur Verfügung gestellt. Dieser Aufruf baut sich nach folgendem Schem auf: $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['comments'][hookName][$_EXTKEY] = 'EXT:yourextkey/class.tx_yourextkey_hooks.php:tx_yourextkey_hooks->methodName'; Auch hier muss ganz genau die Schreibweise eingehalten werden! Die Extension liegt zwar in dem Ordner "comments_email", aber die Klasse wird "tx_commentsemail_hooks" benannt.
<?php Zuerst habe ich die Klasse "class.tslib_pibase.php" eincommentgebunden. Diese Klasse bildet die Basis für Frontend Plugins und enthält einige wichtige Funktionen. Sie befindet sich in dem Ordner "typo3/sysext/cms/tslib/" und ist dort ziemlich gut dokumentiert. Danach wird die eigentlich Klasse (ohne Underscore!) definiert. Die beiden Werte der Funktion "hookFunc" (&$params, &$pObj) habe ich aus der Dokumentation der Extension Comments entnommen. Ich kann zum Beispiel mit folgendem Aufruf nachsehen ob die Checkbox "Jeder Kommentar benötig eine Bestätigung:" angeklickt wurde: $checkSpamProtect = $pObj->conf['spamProtect.']['requireApproval']; Am besten man durchforstet mal mit var_dump($xy) die gegebenen Variablen. So kann man ganz gut sehen was darin gespeichert wurde. Falls euch der genau Code der Extension interessiert einfach im TER downloaden und nachsehen. Ich habe mir für meine Arbeit den Sourcecode von comments und comments_ic genauer angesehen und viel dabei gelernt. Da ich jetzt auf den Geschmack gekommen bin habe ich mir auch gleich Dmitry Dulepovs Buch bestellt. Ich werden dann hier demnächst darüber Berichten. Kommentar hinzufügen
|
kategorieauswahl
kalender
|