Zum Inhalt springen

Wert aus PHP-Datei auslesen

Erstellt am 20. November 2008 · 4 Antworten · letzte Antwort am 22. November 2008

Tags: Bilder, PHP, Frage

tuedel ·

Hallo liebe Experten,

ich habe eine kurze Frage:
ich möchte ein zufälliges Bild in ein mit GIFBUILDER gestaltetes Hintergrundbild einladen. Dieses Bild liegt als Resource im jeweiligen Seiteninhalt. Da TypoScript offenbar keine Funktion für Zufallszahlen bereitstellt, wollte ich das über simpelstes PHP realisieren - will heißen ein PHP-Skript, was nur eine Zufallszahl zwischen 0 und 2 erzeugt (es sind immer 3 Bilder hinterlegt). Diesen Wert möchte ich dann als listNum übernehmen. Mein Ansatz war wie folgt: (wir befinden uns in einem GIFBUILDER)

(...)
20 = IMAGE
20.file = fileadmin/templates/images/background_test.jpg
20.file {
	import = uploads/media/
	import.listNum = PHP_SCRIPT_EXT
	import.listNum {
		file = fileadmin/rand.inc.php
	}
	import.field = media
}

...und das zugehörige PHP-Skript einfach:

<?php echo rand(0,2); ?>

Natürlich hat das nicht geklappt, wäre ja auch zu einfach gewesen 😉

Kann mir jemand von Euch erklären, wo mein Fehler steckt?

Vielen Dank und schöne Grüße,
tuedel

meckpo ·

import.listNum ist vom Typ "stdWrap"

Was man damit anstellen kann findest du hier:
https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/Functions/Stdwrap.html

Schau mal unter "postUserFunc" da gibts ein Beispiel was du anpassen könntest. Mit includeLibs.something = [Pfad zur PHP Datei] bindest du eine PHP-Datei ein.
Mit import.listNum.postUserFunc = user_zufall rufst du deine Funktion da drin auf (Achtung: Die muss "user_" vorne heissen!)

Viel Erfolg

PS: Natürlich nicht "echo" verwenden sondern return $content; oder so

tuedel ·

Hm. Danke schonmal, aber da bin ich nicht wirklich schlau raus geworden. Ich habe folgendes gemacht:

Ganz zu Beginn des TypoScripts:

includeLibs.randomnumber = fileadmin/rand.inc.php

An der gewünschten Stelle:

20 = IMAGE
20.file = fileadmin/templates/images/background_test.jpg
20.file {
	import = uploads/media/
	import.field = media
	import.listNum.postUserFunc = user_rand
}

Das PHP-Skript sieht wie folgt aus:

<?php
function user_rand() {
	$content = rand(0,2);
	return $content;
}
?>

Funktioniert allerdings erwartungsgemäß nicht. Ich habe postUserFunc aber irgendwie auch eher so verstanden, dass etwas AN das Skript übergeben wird, aber ich möchte es doch ABrufen, oder funktioniert das in beide Richtungen?

Google spuckt zu postUserFunc leider auch nichts aus, was mir weiterhelfen könnte. Hat jemand einen Tipp für mich?

Vielen Dank und Grüße,
tuedel

meckpo ·

Also die Funktion bekommt mal wenigstens einen Parameter übergeben (ich galube aber 2)
Probier mal das:

<?php
function user_rand($content,$conf) {
echo "TEST";
        $content = rand(0,2);
        return $content;
}
?>

Wenn dir das wenigstens mal "TEST" rausschreibt dann wird deine Funktion auch aufgerufen.

tuedel ·

Habe was wichtiges vergessen:

import.listNum.stdWrap.postUserFunc = user_rand

muss es natürlich heißen - Problem gelöst! 😉