Zum Inhalt springen

PHP-Skript einfügen

Erstellt am 23. Juli 2009 · 6 Antworten · letzte Antwort am 24. Juli 2009

Tags: Frage

alexkm ·

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

BlackPixel ·

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

Julian.​Hofmann ·

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

sunixzs ·

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.

alexkm ·

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

sunixzs ·

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.