T3 Campus T3 Campus

Dein ersten DataProcessor erstellen

Seit TYPO3 9 gibt es die DataProcessors, welche eine hervorragende Möglichkeit ist, cObjects um weitere PHP Logik zu erweitern.

Was ist ein DataProcessor?

Ein DataProcessor ist Teil des DataProcessing, welches eine Liste von PHP Klassen sind die nacheinander ausgeführt werden. DataProcessing ist Teil von cObjects, wie das FLUIDTEMPLATE.

Ziel ist es eigene PHP Logik auszuführen um das Elternobjekt um weitere Informationen anzureichern. Es finden sich Beispiele in der TYPO3 Dokumentation, wo es bereits vordefinierte DataProcessor bei FLUIDTEMPLATE gibt.

Beispiele:

  • FilesProcessor
  • GalleryProcessor
  • MenuProcessor
  • LanguageMenuProcessor

Der FilesProcessor ermöglicht es von TYPO3 Seiten die Dateien unterhalb von Resourcen zu ermitteln und der LanguageMenuProcessor liefert eine Liste von allen konfigurierten Sprachen mit der Links zur Umschaltung der aktuellen Seite.

Eigenen DataProcessor definieren

Darüberhinaus kann man auch eigene DataProcessor schreiben. Die Basisklasse eines DataProcessors ist: \T3docs\Examples\DataProcessing\DataProcessorInterface

Die Basis einer DataProcessor Klasse sieht dann wie folgt aus:

namespace T3docs\Examples\DataProcessing;

use TYPO3\CMS\Core\Utility\GeneralUtility;
use TYPO3\CMS\Frontend\ContentObject\ContentObjectRenderer;
use TYPO3\CMS\Frontend\ContentObject\DataProcessorInterface;
use TYPO3\CMS\Extbase\Domain\Repository\CategoryRepository;

class CustomCategoryProcessor implements DataProcessorInterface
{
   public function process : array (
      ContentObjectRenderer $cObj,
      array $contentObjectConfiguration,
      array $processorConfiguration,
      array $processedData
   ) {
      if (isset($processorConfiguration['if.']) && !$cObj->checkIf($processorConfiguration['if.'])) {
         // leave $processedData unchanged in case there were previous other processors
         return $processedData;
      }

      return $processedData;
   }
}

Sobald man den DataProcessor via TypoScript für ein cObject registriert hat, wird die process() - Methode aufgerufen, sobald dieses cObject gerendert wird. Jeder DataProcessor reichert dann die View mit neuen Informationen an. Ebenfalls können die DataProcessors in das gemeinschaftliche Array: $processedData lesen und schreiben.

Die Registrierung erfolgt stets über die Eigenschaft: dataProcessing des cObjects. Hier am Beispiel von FLUIDTEMPLATE:

template = FLUIDTEMPLATE
template {
  dataProcessing {
    10 = T3docs\Examples\DataProcessing\CustomCategoryProcessor
  }
}

Wie das genau funktioniert, zeige ich die in meinem TypoScript Komplettkurs.

Innerhalb vom DataProcessor bzw. in der process() - Methode, kannst du dann beliebigen PHP Code schreiben und das Template um deine Funktionalität erweitern. Da das $processedData - Array auch von anderen DataProcessor beschrieben wurden, falls diese vor deinem Processor ausgeführt wurden, kannst du auf Basis deren Resultate reagieren.

Fazit

Der DataProcessor ist eine weitere Alternative, um PHP Code für die View auszuführen. Dadurch kann die Anzahl der ViewHelper reduziert werden und weiter Programmlogik aus der View gebannt werden. Dadurch bleiben die Templatedateien weiterhin übersichtlich und der Designer muss sich nicht darum kümmern.

Bereit mehr zu lernen?

Dann komme in meine TYPO3 Onlineschule

Als Mitglied des T3 Campus für TYPO3 Schulungen erhältst du eine einzigartige Lernplattform, um professionelle Webseiten mit TYPO3 zu erstellen. Egal, ob du ein Einsteiger, Umsteiger oder bereits erfahren bist – hier findest du die passenden Lernvideos für dich.

Kevin Chileong Lee

Gründer vom T3 Campus, TYPO3 Experte mit 10+ Jahren Erfahrung, TYPO3 Liebhaber.

Ich helfe dir dabei, deine Projekte in TYPO3 umzusetzen.

Insbesondere für TYPO3 Einsteiger biete ich zahlreiche kostenfreie Tutorials und kostenpflichtige Kurse rund um TYPO3 an.
Damit kannst du in wenigen Tagen auch ohne Vorkenntnisse deine erste TYPO3 Webseite erstellen und Erweiterungen programmieren.

Auf meinem YouTube-Kanal findest du viele praktische Beispiele und Videotutorials als auch allgemein Videos zu diversen TYPO3 Themen.

Neber den TYPO3 Tutorials und Kopiervorlagen, schreibe ich auch Artikel auf meinem Blog über diverse Themen und Fragen, die die meisten TYPO3 Einsteiger, haben.

Falls du ein TYPO3 Coaching suchst, dann stehe ich dir in einer 1:1 Trainingssession zur Verfügung.

Wenn du auf dem Laufenden sein möchtest über meine Projekte, dann abonniere den Newsletter.