Sorry, war gestern etwas angefressen, deshalb die pampige Antwort.
Um PHP zu verwenden gibt es folgende 2 Optionen ( abgesehen vom schreiben eigener Extensions ).
1. PHP_SCRIPT ( oder auch _INT wenn das Script nicht gecached und somit jedes mal ausgeführt werden soll.
Hier für erstellst du eine PHP-Datei, z.b.
<?php
function meine_funktion() {
return "blahblahblah";
}
$content = meine_funktion();
?>
und bindest diese z.b. mit
lib.meinscript = PHP_SCRIPT
lib.meinscript.file = fileadmin/meinphpscript.php
in dein TS ein und weißt dies einem Marker zu ( oder auch direkt ohne Umweg über lib/temp )
And dieser Stelle wird das PHP-Script eingefügt ( vermutlich per include ) und der Wert aus $content ( das ist Vorgabe )
darin stehen
2. per USER ( _INT, hier funktioniert das mit dem Cached anders herum, als USER_INT markierte Skripte werden gecached )
Die aufgerufenen METHODEN berufen sich auf Funktionen von Klassen, die vorher eingebunden wurden:
<?php
class user_MeineKleineToolbox {
public function meine_funktion($content,$conf) {
if(isset($conf['haenge_an') && !empty($conf['haenge_an')) {
$content .= $conf['haenge_an'];
}
return $content;
}
}
?>
Wichtig: die zu übergebenden Parameter sollten enthalten sein. $content beinhaltet den Inhalt der zu diesem Zeitpunkt mit übergeben werden kann ( soweit vorhanden ) und conf evtl. übergebene Parameter, siehe unten.
Die Klasse MUSS mit user_ beginnen, sonst muss dies im Install-Tool extra angegeben werden.
Eingebunden wird das ganze so:
page.includeLibs.toolbox = fileadmin/user_MeineKleineToolbox.php
...
lib.meinscript = USER
lib.meinscript {
userFunc = user_MeineKleineToolbox->meine_funktion
haenge_an = dieser Text wird angehaengt
userFunc.haenge_an = dieser Text wird angehaengt
# Bin mir an dieser Stelle nicht sicher ob der Parameter an userFunc angehängt werden muss nicht
}
Bei der Angabe von userFunc kann auf die Klammer am Methodenname verzichtet werden, da automatisch die Parameter content und conf übergeben werden und diese Notation nur dazu verwendet wird um die Klasse und Funktion anzugeben.
Scheinbar instantiiert Typo hier jedes Mal ein Objekt mit dem Namen der Klasse und entfernt dieses wieder nach Ausführung der Methode. Solltest du Objektattribute übergreifend verwenden wollen, solltest du diese in einer statischen Variable innerhalb der Klasse hinterlegen.