extension_programmierung

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 der Version 10.4 von TYPO3 gibt es zudem eine Anpassung der Syntax auf Namespaces bei der grundlegenden Konfiguration einer Extension. Diese Grundzüge möchten wir ihnen in diesem Kapitel näherbringen.

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.

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.

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'
  ]
);

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;
}  
Cookies helfen bei der Bereitstellung von Inhalten. Durch die Nutzung dieser Seiten erklären Sie sich damit einverstanden, dass Cookies auf Ihrem Rechner gespeichert werden. Weitere Information
  • extension_programmierung.txt
  • Zuletzt geändert: 02/05/2020 14:58
  • von Thomas Berscheid