Sie befinden sich hier: start » extension_programmierung

TYPO3 Extension Programmierung mit Extbase und Fluid

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, ein Kontaktformular, eine Bildergalerie, ein Eventkalender. In diesem Fall schildern wir Ihnen ein paar Fakten zur Programmierung einer TYPO3 Extension mit Extbase und Fluid anhand unserer Blog Extension, die auf der Webseite unserer Agentur zum Einsatz kommt.

Ü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, eindeutig definierte Schnittstellen und ein eindeutiges Datenmodell für eine Extension. Zudem gibt es eine Trennung zwischen Daten mit ihrer Verarbeitung und der Darstellung. Mit den Versionen 10.4 und 12.4 von TYPO3 gab es zudem Anpassungen der Syntax auf Namespaces bei der grundlegenden Konfiguration einer Extension. Diese Grundzüge möchten wir ihnen in diesem Kapitel näherbringen.

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('TYPO3_MODE') || die('Access denied.');

call_user_func(
  function()
  {
    [...]
  }
);

Seit der Version TYPO3 12.4 sieht der Dateiheader aus wie hier:

<?php

[...]

defined('TYPO3') or die();

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('TYPO3') or die();

ExtensionUtility::configurePlugin(
  'Ibkblog',
  'Blog',
  [
    BlogController::class => 'list, show, create, edit, remove'
  ],
  // non-cacheable actions
  [
    BlogController::class => 'list, show, create, edit, remove'
  ]
);

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::configurePlugin(
  'Ibkblog',
  'Blog',
  [
    \Ibk\Ibkblog\Controller\BlogController::class => 'list, new, create, searchList, show, page'
  ],
  // non-cacheable actions
  [
    \Ibk\Ibkblog\Controller\BlogController::class => 'list, new, create, searchList, show, page'
  ]
);

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::configurePlugin(
  'Ibk.' . $_EXTKEY,
  'Blog',
  array(
    'Blog' => 'list, new, create, show',
  ),
  // non-cacheable actions
  array(
    'Blog' => 'list, new, create, show',
  )
);
  • Über 'Ibk.' . $_EXTKEY legen Sie den Vendor Nam Listenpunkten und den Schlüssel der Extension fest.
  • Mit 'Blog' weisen Sie einem Plugin einen Namen zu
  • Durch die Arrays 'Blog' ⇒ 'list, new, create, show' weisen Sie nun einem Plugin die möglichen Actions zu, die von diesem Plugin ausgeführt werden dürfen.

Die Actions selber bearbeiten Sie dann im Controller der Extension.

Das Daten Modell einer Extension erstellen

Eine TYPO3 Extension nutzt objektorientierte Programmierung, um Daten zu speichern und darzustellen. Das Modell, mit dem diese Daten dem System bekannt gemacht werden, hat sich in den letzten Versionen von TYPO3 ebenfalls leicht geändert. Der Vorteil hierbei: Sie brauchen ca. 60% weniger Quelltext.

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->name;
}
    
/**
 * Sets the name
 * 
 * @param string $name
 * @return void
 */
public function setName($name)
{
  $this->name = $name;
}  

Auch dieser ist nun kürzer geworden:

public function getName(): string
{
  return $this->name;
}
 
public function setName(string $name): void
{
  $this->name = $name;
}