Im nachfolgenden Skript des fiktiven Plugins „pluginXYZ_pi1“ wird zunächst ein Array aufgebaut. Dieses enthält die Entsprechung des TypoScript-Codes um ein Bild zu erzeugen. Dieses wird dann am Ende in ein Content-Object umgewandelt und zurückgegeben.

PHP

class tx_pluginXYZ_pi1 extends tslib_pibase {
   var $prefixId = "tx_pluginXYZ_pi1";
   var $scriptRelPath = "pi1/class.tx_pluginXYZ_pi1.php";
   var $extKey = "pluginXYZ";

   function main($content,$conf) {
      $this->conf=$conf;
      $this->pi_setPiVarDefaults();
      $this->pi_loadLL();

      // Aufbau des TypoScript-Arrays
      $img["file"] = 'GIFBUILDER';
      $img['file.']["XY"] = '200,100';
      $img['file.']["5"] = 'IMAGE';
      $img['file.']["5."]["file"] = 'fileadmin/dummy_bild.gif'';
      $img['file.']["10"] = 'TEXT';
      $img['file.']["10."]["offset"] = '30,20';
      $img['file.']["10."]["text"] = 'Sonderangebot!';
      $img['file.']["10."]["fontColor"] = 'red';
      $img['file.']["10."]["fontSize"] = '20';

      // MAGIC – hier wird das TypoScript-ähnliche Array in ein Content-Object verwandelt
      $image .= $this->cObj->IMAGE($img);

      // Und das Bild wird schließlich ausgegeben
      return $this->pi_wrapInBaseClass($image);
   }
}

Listing 2

Plugin Base API

Neben den Content-Objects ist diese API die wichtigste, wenn es um das Schreiben von Frontend-Plugins geht. Sie ist die Basis für alle Plugins, daher werden alle Plugin-Klassen auch von ihrer Klasse „tslib_pibase“ abgeleitet. Das ist zwar nicht unbedingt notwendig, da es durchaus einige Ansätze gibt, diese Basisklasse zu ersetzen. Nichtsdestotrotz sollte man diese ausgereifte und umfangreiche Klasse verwenden, zumal sie durch den Extension-Manager automatisch abgeleitet wird, wie in Zeile 1 des vorherigen Skripts zu sehen ist.

Zugriff auf die API:
Klassendatei: /sysext//tslib/class.tslib_pibase.php
Anzahl Funktionen: 35
Zugriff vom Backend:

require_once(PATH_tslib.'class.tslib_pibase.php');

class tx_classXYZ extends tslib_pibase { ... }

Die Klasse ist vor allem für folgende Funktionen zuständig:

  • Link-Generierung
  • Handling von lokalisierten Labels
  • Frontend-Editing
  • Datenbank-Abfragen (diese sind den bereits in der allgemeinen API behandelten sehr ähnlich)
  • Flexform-Handling

Gerade die Linkgenerierung und die Datenbank-Abfragen sind von zentraler Bedeutung. Erstere erstellt immer korrekte Links – unabhängig davon, ob Extensions wie „RealURL“ installiert wurden oder ob etwaige Parameter mitgeschleift werden müssen. Und letztere sorgen dafür, dass die Datenbank ebenfalls immer korrekt abgefragt wird, unabhängig davon, welches DBMS verwendet wird oder wie die exakte Struktur der Datenbanktabelle lautet. Zudem können die WHERE-Statements, die den Datensatz eingrenzen, automatisch erzeugt werden – beispielsweise im Hinblick auf Sichtbarkeit oder Zugriffsrechte.

PHP

// LINK-GENERIERUNG
// Ermittelt die URL zu einer Seite ($id)
$this->pi_getPageLink($id,$target='',$urlParameters=array())
// Verlinkt einen String mit der URL zu einer Seite ($id)
$this->pi_linkToPage($str,$id,$target='',$urlParameters=array())
// Verlinkt einen String mit der aktuellen URL
$this->pi_linkTP($str,$urlParameters=array(),$cache=0,$altPageId=0)
// Verlinkt einen String mit der URL zu einer Seite ($id) mit Beibehaltung der Variablen in piVars
$this->pi_linkTP_keepPIvars($str,$overrulePIvars=array(),$cache=0,$clearAnyway=0,$altPageId=0)
// Verlinkt einen String mit der aktuellen URL mit Beibehaltung der Variablen in piVars
$this->pi_linkTP_keepPIvars_url($overrulePIvars=array(),$cache=0,$clearAnyway=0,$altPageId=0)

// DATENBANK-ABFRAGEN
// Erstellt einen Standard-Query, führt diesen aus und liefert das Ergebnis als Pointer zurück
function pi_exec_query($table,$count=0,$addWhere='',$mm_cat='',$groupBy='',$orderBy='',$query='')
// Ermitteln des Records $uid der Tabelle $table
$this->pi_getRecord($table,$uid,$checkPage=0)

Listing 3

Der nächste Teil dieser Artikelserie wirft einen detaillierten Blick auf das TCA sowie das Flexform- und AJAX-Handling von TYPO3.

Der letzte Artikel der Serie erscheint in der nächsten t3n-Ausgabe:
Teil 1 (t3n Nr. 13) Tour de Core
Teil 2 (t3n Nr. 14) Allgemeine APIs
Teil 3 (t3n Nr. 15) Backend- und Frontend-APIs
Teil 4 (t3n Nr. 16) TCA, Flexforms, AJAX
Seite:  1 2 3 4

Weitere Artikel zu TYPO3 und CMS

Softlink 2273

Links und Literatur

Das interessiert dich bestimmt auch

Hilfreiche Ressourcen zu TYPO3

Hilfreiche Ressourcen zu TYPO3

TYPO3 ist mit über 500.000 Installationen, einer Community von mehr als 100.000 internationalen Mitgliedern und über...

2 Antworten

  1. von tommy 01.10.2009 (22:13Uhr) 1.

    Hallo und vielen Dank für diesen Artikel. Kann man Teil 1 und 2 auch im Heftarchiv lesen? Eine Verlinkung wäre schön.

    Vielen Dank,

    tommy

  2. von tommy 01.10.2009 (22:22Uhr) 2.

    Verzeihung, ich hätte bis zum Ende lesen sollen. Eine Google Suche hat diese Links zu Tage befördert:

    Teil 1, Tour de Core: http://t3n.de/magazin/typo3-teil-1-tour-de-core-221024/
    Teil 2, Allgemeine APIs: http://t3n.de/magazin/typo3-blick-innere-cms-teil-2-allgemeine-apis-221175/

Deine Meinung


(wird nicht veröffentlicht)