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.
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: | typo3/sysext/cms/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.
// 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 |





2 Antworten
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
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/