Hoffe der Titel verwirrt nicht.
Ich habe ein PHP Script was an verschiedenen Stellen des Projektes genuzt wird und mit dem PHP-Plugin als PHP-Script Inhaltselement in die Seiten engepflanzt wird. Allerdings nur einmal, die anderen Stellen wo es gebraucht werden, verweisen nur auf den Datensatz, also als Contentelement "Datensatz einfuegen". Damit ich nun fuer dieses Script Parameter uebergeben kann moechte ich den Seiten in die der Datensatz eingefuegt wird eine Typoscript-Variable / Konstante zuordnen, die dann mit PHP ausgelesen wird. Da Seiten keine Constants so wie bei Templates haben, muss ichdas also im Page TSConfiog anlegen.
Wie muss ichdas nun machen, wenn ich eine Variable "Nummer" in die Seite einfuegen und mit PHP auslesen will?
Ich dachte im Page TSConfig einfach
page.Nummer = myVal
aber, wie komme ich dann in PHP da dran?
Hoffe es ist klar was ich meine...
Das PHP-PlugIn kenne ich nicht, ich binde scripts per User / UserInt ein.
Da Seiten keine Constants so wie bei Templates haben, muss ichdas also im Page TSConfiog anlegen.
Daher legst du ein Extension-Template an, da hast du deine Constanten 😉
Variablenübergabe erfolgt so :
page.includeLibs.meinscript = fileadmin/scripts/meinscript.php
page.10 {
marks.MARKER = USER_INT
marks.MARKER {
userFunc = user_meinscript->user_meinscript_main
variable1 = 1281
variable2 = {$konstante1}
}
...
Im Script greifst du dann so auf die übergebenen Variablen zu:
class user_meinscript {
...
function user_meinscript_main($content,$conf) {
$variable1 = $conf['variable1'];
$variable2 = $conf['variable1'];
...
jenses
Okay, darein ien Extension Template zu nehmen hab ich nicht gedacht, so kriege ich meine Constants.
Aber ich fuerchte ich verstehe den Rest nicht so ganz. Zum einen muss ich das Script als Contentelement einbinden, da die Ausgabe an einer bestimmten Stelle erfolgen soll. Das habe ich so realisiert, dass ich im Template festgelegt habe, dass alle inhalte in der Spalte "Links" an Stelle eines MArkers geschrieben werden. Das PHP Script fuege ich nun auf der entsprechenden Seite als Contentelement in die linke Spalte ein.
Das verwendete Plugin ist page_php_content.
Jetzt zu deinem Code:
1. Wozu der Marker?
2. Ich verstehe Zeile 5 so, dass da die Werte der Variablen/Konstanten an eine vordefinierte PHP Funtion der dafuer angelegten Klasse uebergeben wird.
Mein Script ist aber nicht objektorientiert aufgebaut und das umstricken waere auch recht viel aufwand. (Als JAVA Entwickler sträube ich mich gegen die von PHP verwendete Objektorientierung ;-) ). Wie kann ich das dennoch machen?
Meine Idee war einfach die, dass ich in meinem Script eine PHP Variable $var anlege und die mit einem Wert belege, der eben aus TS kommt. Ich dachte ich komme mit solchen Sachen wie $GLOBALS[TSConfig]->Varname oder so irgendwie dran. Werden die Typo-Eigenschaften nicht in irgendeinem PHP Array gehalten?
Gruss,
Tom
Major Tom schrieb
Zum einen muss ich das Script als Contentelement einbinden, da die Ausgabe an einer bestimmten Stelle erfolgen soll.
Aber über den Marker bekommst du doch das Script an genau eine definierte Stelle #paralyzed#
Wie gesagt, php-content-plugin benutze ich nie,
ich mach das immer so wie skizziert.
Du brauchst in deinem PHP-Skript keine Klassen zu haben, du kannst auch direkt eine Funktion aufrufen:
userFunc = user_meinscript_main
Die Zeile ist der Funktionsaufruf in Typo3,
die beiden nachfolgenden übergeben die Variablen,
die du dann im Script per $conf['variable1'] wieder ausliest.
So wirst du auch nie(oder höchst unwahrscheinlich) das Problem bekommen, zwei Variablen mit gleichem Namen irgendwo rumschwirren zu haben.
Das ist doch eine recht einfache Geschichte.
Einfach mal in die TSRef schauen, da steht alles genauestens erklärt.
Ich habs ja auch kapiert 😉
Ah, jetzt ja.
Der Groschen ist gefallen, werds gleich probieren.
Leider klappt das nicht.
es scheitert bereits daran, dass der Marker scheinbar nicht angesprochen wird.
Ich habe nun im HTML-Template einen Marker ###LEFT### angelegt. Wenn ich mit dem nix anfange wird der auch im generierten Quelltext angezeigt.
Ich habe der entsprechenden Seite auf die das Script soll ein Extension-Template zugefuegt, mit dem o.a. Quellcode, natuerlich an meine Beduerfnisse modifiziert. Keine Veraenderung (Cache natuerlich geleert).
Danach habe ich probiert den Marker einfach nur mit Text zu belegen, auch das war noicht erfolgreich:
Mein Ext-Template sieht so aus:
page.includeLibs.meinscript = fileadmin/php_scripts/random.php
page.10 {
marks.LEFT = TEXT
marks.LEFT.value = Hallo
}
keine Ausgabe, im generierten Quelltext bleibt weiterhin nur der Marker zu sehen.
Zuvor hatte ich folgenden Code, ebenfalls bloss der Marker im Quelltext:
page.includeLibs.meinscript = fileadmin/php_scripts/random.php
page.10 {
marks.MARKER = USER_INT
marks.MARKER {
userFunc = main
variable1 = 1281
variable2 = {$konstante1}
}
Die Funktion main() erzeugt in jedem Fall eine Ausgabe.
In meinem Haupttepmplate fuelleich ich Marker in einem workOnSubpart Block, kann das damit zusammenhaengen?
Major Tom schrieb
In meinem Haupttepmplate fuelleich ich Marker in einem workOnSubpart Block, kann das damit zusammenhaengen?
Vermutlich.
Baue den Marker doch testhalber da ein und rufe die Funktion auf.