Hallo an Alle.
Ich habe ein grosses Problem mit der Einbindung eines selbstprogrammieren PHP-Skriptes in das Typo3.
Ich möchte mehrere Bilder je nach Bedarf bzw. Jahreszeit wechseln lassen und habe jetzt ein PHP-Skript (2PHP Dateien) was ich seit Jahren benutze und jetzt in Typo3 einbinden wollte.
Ich möchte meine Kopfbild und ein weiteres Bild im Menü ändern lassen, aber da ich ein Laie im Typo3 bin, brauche ich dringend hilfe. Das heisst auch eine "Idioten"sichere Anleitung zum Einbinden.
Achso, einen Marker hab ich in die Template-HTML an der Stelle schon eingebunden, aber an der Definition scheitert es auch.
Vielen Dank für eure Hilfe.
Alexander
Hier mal was ich bereits an anderer Stelle geschrieben habe:
// Als erstes bindest Du das PHP Script ein (TS Setup)
includeLibs.meineKlasse = fileadmin/templates/classes/class.meineKlasse.php
// Dann rufst Du die Klasse und die gewünschte Funktionen aus Deinem PHP File auf
temp.meinephpfunc= USER
temp.meinephpfunc.userFunc = meineKlasse->meine PHPFunktion
// Zusätzliche Parameter kannst Du ebenfalls übergeben
temp.meinephpfunc.irgendwas = irgendwas
// Und dann auf den Marker anwenden
page.10.marks.MEINMARKER < temp.meinephpfunc
Gruß Manfred
Hallo Alex.
Die Antwort auf Deine Frage (und warum es eine schlechte Lösung ist) steht fast monatlich hier im Forum. Nutz doch mal die Suche 😉
Aber eine ganz anderer Ansatz: Wozu ein PHP-Skript zum Bildwechsel bzw. (zeit)abhängigen einbinden? Dafür gibt's auch TS:
- Conditions
- Media-Feld der Pages
Viele Grüße
Julian
Hallo Julian,
betrifft das auch meine Antwort? hast Du mir eben einen konkreten Link zur Hand?
Gruß Manfred
Hallo alexkm,
externe PHP-Scripte kann man z. B. so einbinden (Im SETUP-Feld eines Templates):
# Zufallshintergrund bei jeder Seite
page.includeLibs.user_pageBackground = fileadmin/lib/user_pageBackground.php
rndBackground = COA
rndBackground {
10 = USER_INT
10 {
userFunc = user_pageBackground->main
}
}
page.headerData.30 = HTML
page.headerData.30 < rndBackground
Es wird die Datei "fileadmin/lib/user_pageBackground.php" gelesen und die enthaltene PHP-Klasse "user_pageBackground" eingebunden. Wichtig ist, dass der Dateiname und der Klassenname mit "user" anfangen und gleich lauten.
Bei "rndBackground" wir ein USER_INT-Object erzeugt und dort mit "userFunc" die Methode "main" der Klasse "user_pageBackground" ausgeführt. Bei der Ausgabe darauf achten kein "echo" zu verwenden. Ebenfalls ist darauf zu achten, dass vor und hinter der PHP-Deklaration keine Zeichen mehr vorhanden sind - also vor und hinter "<?php ?>" darf nichts stehen.
Im Beispiel wird bei "page.headerData" die Ausgabe für die Webseite erzeugt. Das kann natürlich auch ein Marker sein:
page.10.marks.MEIN_MARKER = HTML
page.10.marks.MEIN_MARKER < rndBackground
Die PHP-Datei/Klasse könnte so aussehen:
class user_pageBackground {
function main($content, $conf){
$this->conf = $conf;
// mach irgend etwas
$content = "Meine Ausgabe";
return $content;
}
EDIT: Da waren zwei schneller 😉 . Bescheidene Frage: Gibt es Zufallsfunktionen im TypoScript? Wenn ich nach sowas google, treffe ich dann immer wieder auf PHP-Lösungen.
Danke für diese Antworten.
Im Laufe der Nacht hab ich dann nochwas gefunden was ich probiert hab und funktioniert auch.
marks.BILDW = PHP_Script_EXT
marks.BILDW.file = fileadmin/Template/Bildwechsel/bildwechsel.php
Die Bilder gebe ich als Echo (img..) aus. Ist der TS so prizipiell so gut oder doch lieber was Ihr geschrieben habt?
Lieben Gruss
Alex
Ich glaube PHP_SCRIPT_EXT ist die alte Methode um PHP einzubinden.
Bei includeLibs gäbe es noch die Möglichkeit Parameter an die einzubindene Klasse zu übergeben:
page.includeLibs.user_pageBackground = fileadmin/lib/user_pageBackground.php
rndBackground = COA
rndBackground {
10 = USER_INT
10 {
userFunc = user_pageBackground->main
# CONF
meinParameter = meinWert
path = fileadmin/images/rnd/
}
}
Die Daten unter "# CONF" stünden dann als $conf in der Klasse zur Verfügung.