„Kickstarter“-Extensions in TYPO3 6.2 weiterverwenden

Extension Smooth Migration in TYPO3 4.5
Extension „Smooth Migration“ in TYPO3 4.5

Wer in den vergangenen Jahren Programmerweiterungen für TYPO3 – „Extensions“ genannt – programmierte, nutzte dazu häufig die TYPO3-eigene „Kickstarter“-Funktionalität. Damit ließ sich die Grundstruktur einer Extension bequem im Backend zusammenklicken, der Programmierer konnte sich anschließend auf den eigentlich relevanten PHP-Code seiner Anwendung konzentrieren. Da aber der per Kickstarter erzeugte Code mit den Jahren zunehmend antiquierter anmutete, wurde das CMS TYPO3 2009 um eine neue Extension-Basis namens „Extbase“ erweitert, die analog zum Kickstarter-Konzept über das Werkzeug „Extension Builder“ zu verwalten ist. Beide Software-Pakete ließen sich entsprechend der bisher von den TYPO3-Machern eher großzügig gehandhabten Abwärtskompatibilität nebeneinander her nutzen. Bis zur Ankündigung von TYPO3 6.2.

Zunächst schien es so, als ob in Version 6.2 des CMS für Extensions nach dem alten Kickstarter-Modell überhaupt keine Verwendung mehr vorgesehen sei. Da zu dem Zeitpunkt die Masse der verfügbaren Erweiterungen auf dieser Technik beruhte, fielen die Reaktionen entsprechend deutlich aus. Die TYPO3-Macher ruderten daraufhin zügig zurück. Im November 2013 verkündete Release-Manager Ernesto Baschny, dass auch künftig die Programm-Klasse „tslib_pibase“ zur Verfügung stehe und man so seine alten Extensions nach einer gewissen Anpassung weiterverwenden könne. Wie diese Anpassung allerdings aussehen müsse, darüber wurde zunächst wenig bekannt.

Nachdem nun TYPO3 6.2 erschienen ist und die ersten CMS-Upgrades realisiert wurden, sehe ich dem Thema  „alte Extensions in neuem TYPO3“ deutlich entspannter entgegen. Hilfreich ist dabei die Extension Smooth Migration, die den vorhandenen TYPO3-Bestand auf Baustellen hin überprüft. Wer in der Vergangenheit sauber nach den Coding Guidelines von TYPO3 programmiert hat, sollte pro Extension in der Regel nicht allzuviel zu tun haben:

  • keine mysql-Befehle: Dies wurde noch nie gerne gesehen, doch nicht wenige Entwickler haben aus Zeitgründen direkte mysql-Funktionen in Ihre Extensions geschrieben. Diese müssen nun sämtlich gegen die TYPO3-eigenen Pendants ersetzt werden.
  • tslib_pibase: Die zentrale tslib_pibase-Klasse steht ab 6.2 nur noch als Alias zur Verfügung, darf deshalb nicht mehr per require_once eingebunden werden.
  • t3lib: Die T3-Bibliothek t3lib existiert nicht mehr in Ihrer bisherigen Form, sie wird durch die Klasse BackendUtility abgelöst. Praktisch beschränkt sich der Umbau darauf, die entsprechenden require_once-Aufrufe auszutauschen.

Mit diesen drei Schritten ließen sich bislang alle getesteten Extensions auf 6.2-Niveau bringen. Muss man in einer TYPO3-Installation viele Extensions anpacken, kommt dabei sicherlich einiges an Arbeitszeit zusammen. Doch nach den anfänglichen Schreckensmeldungen wurde letztlich für die weitaus meisten alten Extensions ein akzeptabler Weg gefunden, um auch in Zukunft zuverlässig genutzt werden zu können.

4 Stimmen

6 Gedanken zu „„Kickstarter“-Extensions in TYPO3 6.2 weiterverwenden“

  1. Hallo.
    Fehlermeldung bekomme ich keine.
    Die Extension stehe einfach nicht zur Auswahl, wenn ich im Extension Builder auf „Load“ klicke.
    Werde in der nächsten Zeit mal alle namespaces einfügen und die Klassen auf die neue Schreibweise anpassen.
    Also so
    class MyClass extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
    statt
    class Tx_Kbs_Domain_Model_Abstract extends Tx_Extbase_DomainObject_AbstractEntity

    Seit gestern bekomme ich aber seltsamerweise eine Fehlermeldung, wenn ein User sein Profil im Frontend bearbeiten will.

    #1253175643: The argument type for parameter $userAccount of method Tx_MyExt_Controller_UserAccountController->editAction() could not be detected.

    /**
    * action edit
    *
    * @param mixed $userAccount
    * @return void
    */
    public function editAction($userAccount = NULL) {

    }

    Hast du sowas schon mal gehabt bzw. Erfahrung damit?
    Beste Grüße und Dank

  2. Hallo Rolf.
    Vielen Dank für den informativen Artikel.
    Ich habe eine selbstertellte Extbase-Extension (erstellt mit Extension Builder 2.1) von Typo3 4.6 auf Typo3 6.2 portiert. Ich kann die Extension problemlos installieren und die einzelnen Pluginins auch einbinden.
    Nur leider kann ich die Extension nicht mit dem Extension Builder 6.2 öffnen und ändern/weiterentwickeln.

    Hast du das hinbekommen??

    Vielen Dank für deine Hilfe!

    1. Hallo Jürgen,
      ich habe bislang eine Extbase-basierte Extension von der 4er- zur 6er-Version von TYPO3 migriert. Dazu musste ich allerdings im Quellcode der Extension ein paar Kleinigkeiten ändern. So weit ich mich erinnere ging es da um Pfad-Adressierungen und den Zugriff auf das Repository. Vorher ließ sich die Extension aber auch gar nicht produktiv unter TYPO3 6.1 oder 6.2 nutzen. Diverse Funktionsaufrufe, wie sie z.B. im Extbase/Fluid-Buch von O’Reilly dokumentiert sind, funktionieren in der 6er-Version von Extbase anders. Leider ist das bislang nur ansatzweise dokumentiert, unsere Entwickler schimpfen da manchmal nicht wenig… 😉
      Darum wundere ich mich ein bisschen, dass Deine Extension unbearbeitet so anstandslos funktioniert. Nach der Code-Anpassung konnte ich meine Extension auf jeden Fall im Extension Builder öffnen.
      Grüße, Rolf

      1. Hallo Rolf.
        Vielen Dank für deine Antwort.
        Ich habe meine Extension mit „smoothmigration“ portiert. Da war schon einiges anzupassen aber danach konnte ich die einzelnen Plugins problemlos in Typo3 6.2 verwenden. (Das habe ich mit portiert in meinem Originalpost gemeint.)

        Damit ich das richtig verstehe, du hast die namespaces eingefügt und die Klassenableitungen mit Pfaden gemacht und danach konntest du die Extension im Extension-Builder 6.2 öffnen? Waren da noch weitere Anpassungen in Config-Files etc. nötig oder hat das dann einfach geklappt?

        Vielen Dank!
        Beste Grüße,
        Jürgen

        Bsp: mit Namespaces

        1. Hallo Jürgen,
          ich habe mit smoothmigration bislang nur Extensions im Kickstarter-Stil aktualisiert. Die erwähnte Extbase-Extension habe ich in Version 6.1 installiert und dort von Hand bearbeitet. Ich hab’s gerade noch einmal probiert, sie lässt sich im Extension Builder unter 6.2 öffnen.
          Die namespaces waren das eine, aber ich habe auch ein paar Funktionsaufrufe anpassen müssen. Leider musste ich nur eine Extbase-Extension anpassen, darum habe ich mir keine Notizen gemacht. Wenn ich mich recht entsinne, bezogen sich die Änderungen auf das Repository. Aber falls hier bei Dir alles funktioniert, kann es ja daran eigentlich auch nicht liegen. Bekommst Du denn irgendeine Fehlermeldung?
          Grüße, Rolf

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Time limit is exhausted. Please reload CAPTCHA.