Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
— | extension_programmierung [2023.12.12 16:02] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
+ | ====== TYPO3 Extension Programmierung mit Extbase und Fluid ====== | ||
+ | |||
+ | Extensions sind ein wichtiges Werkzeug zur Erweiterung der Funktionen von TYPO3. Eine Extension kann alles sein: Eine Nachrichtenverwaltung, | ||
+ | |||
+ | Über die Jahre hinweg ist die Programmierung einer TYPO3 Extension mit Extbase und Fluid immer weiter standardisiert worden. Dies bringt einen klaren technischen Vorteil: Es gibt eine klar definierte Verzeichnisstruktur, | ||
+ | |||
+ | ===== Extension Konfiguration ===== | ||
+ | |||
+ | |||
+ | In der Datei ext_localconf.php setzt man Standards zur Einbindung von Plugins für die gesamte Extension fest. In dieser Datei legen Sie fest, welchem Plugin Sie welche Aktionen zuweisen. Nehmen wir den Blog als Beispiel: Hier haben wir die verschiedenen Ansicht des Blog, z. B. die Listenansicht oder die Anzeige der einzelnen Beiträge. Zudem gibt es noch weitere Aktionen, die wir dem Blog zuweisen können. | ||
+ | |||
+ | ==== TYPO3 ab 12.4: ext_localconf.php ==== | ||
+ | | ||
+ | Mit der Version **12.4** hat TYPO3 die Konfiguration des Systems geändert. Diese funktioniert nun über ein Einbindung eines Namespaces, die eigentlichen Daten zur Einbindung von Actions in den Controller ist im wesentlichen identisch. Auch der Datei Header hat nun eine neue Methode, um ein Eindringen in das System zu erschweren. | ||
+ | |||
+ | === Geänderter Dateiheader in TYPO3 12.4 === | ||
+ | |||
+ | Der Dateiheader in TYPO3 sah bis einschließlich Version 11.5 folgendermaßen aus: | ||
+ | |||
+ | <?php | ||
+ | defined(' | ||
+ | | ||
+ | call_user_func( | ||
+ | function() | ||
+ | { | ||
+ | [...] | ||
+ | } | ||
+ | ); | ||
+ | | ||
+ | Seit der Version TYPO3 12.4 sieht der Dateiheader aus wie hier: | ||
+ | |||
+ | <?php | ||
+ | | ||
+ | [...] | ||
+ | | ||
+ | defined(' | ||
+ | | ||
+ | | ||
+ | === Plugin Konfiguration in TYPO3 12.4 === | ||
+ | | ||
+ | Mit der Veröffentlichung der Version 12.4 von TYPO3 ist die Konfiguration der Plugins in einer Extension übersichtlicher geworden. Diese geschieht nun über die einmalige Einbindung eines Namespaces im Datei Header, so dass im Folgenden lediglich Referenzen auf die Klasse gesetzt werden müssen: | ||
+ | |||
+ | <?php | ||
+ | | ||
+ | use Ibk\Ibkblog\Controller\BlogController; | ||
+ | use TYPO3\CMS\Extbase\Utility\ExtensionUtility; | ||
+ | | ||
+ | defined(' | ||
+ | | ||
+ | ExtensionUtility:: | ||
+ | ' | ||
+ | ' | ||
+ | [ | ||
+ | BlogController:: | ||
+ | ], | ||
+ | // non-cacheable actions | ||
+ | [ | ||
+ | BlogController:: | ||
+ | ] | ||
+ | ); | ||
+ | | ||
+ | |||
+ | |||
+ | |||
+ | ==== TYPO3 ab 10.4: ext_localconf.php ==== | ||
+ | |||
+ | Für die TYPO3 Version **10.4** sind zwei Eigenschaften für den Aufbau der Extension Konfiguration auf einen neuen Stand gebracht worden: | ||
+ | |||
+ | * Der Extension Key wird nicht mehr im ersten Feld des Array übergeben | ||
+ | * Die angesprochene Klasse wird nun direkt im zuständigen Controller angesprochen | ||
+ | |||
+ | |||
+ | \TYPO3\CMS\Extbase\Utility\ExtensionUtility:: | ||
+ | ' | ||
+ | ' | ||
+ | [ | ||
+ | \Ibk\Ibkblog\Controller\BlogController:: | ||
+ | ], | ||
+ | // non-cacheable actions | ||
+ | [ | ||
+ | \Ibk\Ibkblog\Controller\BlogController:: | ||
+ | ] | ||
+ | ); | ||
+ | | ||
+ | |||
+ | |||
+ | |||
+ | ==== TYPO3 bis 9.5: ext_localconf.php ==== | ||
+ | |||
+ | Hier ein Beispiel für das Plugin Blog, dem mehrere Aktionen zugewiesen werden. Dazu müssen wir die Methode configurePlugin bearbeiten: | ||
+ | |||
+ | |||
+ | \TYPO3\CMS\Extbase\Utility\ExtensionUtility:: | ||
+ | ' | ||
+ | ' | ||
+ | array( | ||
+ | ' | ||
+ | ), | ||
+ | // non-cacheable actions | ||
+ | array( | ||
+ | ' | ||
+ | ) | ||
+ | ); | ||
+ | | ||
+ | | ||
+ | |||
+ | * Über ''' | ||
+ | * Mit ''' | ||
+ | * Durch die Arrays ''' | ||
+ | |||
+ | Die Actions selber bearbeiten Sie dann im Controller der Extension. | ||
+ | |||
+ | ===== Das Daten Modell einer Extension erstellen ===== | ||
+ | | ||
+ | |||
+ | Eine TYPO3 Extension nutzt objektorientierte Programmierung, | ||
+ | |||
+ | Eine Variable in einem Objekt legte man bislang so an: | ||
+ | |||
+ | /** | ||
+ | * name | ||
+ | | ||
+ | * @var string | ||
+ | */ | ||
+ | protected $name = ''; | ||
+ | | ||
+ | Sie brauchen eine Variable in einem Objekt nun nicht mehr zu beschreiben - es reicht die Initialisierung der Variable: | ||
+ | |||
+ | protected $name = ''; | ||
+ | | ||
+ | Der Getter und Setter einer Extension sah bislang folgendermaßen aus: | ||
+ | |||
+ | /** | ||
+ | * Returns the name | ||
+ | | ||
+ | * @return string $name | ||
+ | */ | ||
+ | public function getName() | ||
+ | { | ||
+ | return $this-> | ||
+ | } | ||
+ | | ||
+ | /** | ||
+ | * Sets the name | ||
+ | | ||
+ | * @param string $name | ||
+ | * @return void | ||
+ | */ | ||
+ | public function setName($name) | ||
+ | { | ||
+ | $this-> | ||
+ | } | ||
+ | |||
+ | Auch dieser ist nun kürzer geworden: | ||
+ | |||
+ | public function getName(): string | ||
+ | { | ||
+ | return $this-> | ||
+ | } | ||
+ | |||
+ | public function setName(string $name): void | ||
+ | { | ||
+ | $this-> | ||
+ | } |