Zum Inhalt springen

Random Template - aber wie?

Erstellt am 7. September 2006 · 24 Antworten · letzte Antwort am 12. September 2006 · Seite 1 von 2

Tags: Templates & Layouts, PHP, Frage

electric-x ·

Hallo typo3.net Forum,

und zwar möchte ich 2 verschiedene php Templates immer via random aufrufen lassen. Gibt es da was für den Befehl: template.file = fileadmin/template01.php ?

würde mich über ein Tipp freuen!

Danke 🙂

electric-x ·

Danke für Deine Antwort. Aber was ich suche sind keine einzelnen Contentelemente die via Random angezeigt werden sollen, sondern komplett das Template an sich soll zwischen 2 PHP Dateien immer switchen im random Verfahren.

Unbekannter Benutzer ·

Also über TS direkt gehts nicht, aber über stdWrap.postUserFunc könntest du dir eine PHP-Funktion einbinden, die ein Template auswählt und den Pfad dazu zurück gibt.

electric-x ·

Gibt es irgendwo was genaueres wie stdWrap.postUserFunc mit einer PHP Funktion zusammenarbeitet? das heißt es würde aus einer PHP Datei in der sich diese Randomanweisung befindet den Pfad ziehen und voila... So in der Theorie

Unbekannter Benutzer ·

genau, deine template.file anweisung braucht ja einen String mit dem Pfad zu dem Template.

d.h. du brauchst in deiner Funktion am Ende nur irgendwie eines der beiden Templates mit Pfad zu returnen.

Eigenlich bekommt die Funktion nur den aktuellen Wert des Objekts auf das es angewendet wird (in deinem Fall keiner, da du ja nicht den Wert verändern willst) und der return der Funktion wird dann zum neuen Wert des Objekts.

electric-x ·

#paralyzed# - also in der Theorie wie gesagt habe ich es verstanden nur in der Praxis siehts wohl anders aus. Ich bekomme den random Befehl hin der steckt in einer random.php - nur das mit typo3 zu verknüpfen über diesen befehl "stdWrap.postUserFunc". Beim google für diesen Befehl "stdWrap.postUserFunc" ist mir jetzt auch nichts konkretes zu meinem Problem aufgetaucht.

Unbekannter Benutzer ·

oki, ich habs nicht probiert, aber ungefähr so sollte es gehen:

# 1. die Bibliothek einbinden

page.includeLibs.yourrandom = fileadmin/random.php # Pfad anpassen

# 2. Funktion aufrufen und Ergebnis an TEMPLATE übergeben, bitte Anfang an deine bedürfnisse anpassen

template.file.import.postUserFunc = derFunktionsname #hier bitte Name der Funktion

# alternativ, falls das oben nicht geht

template.file.import.stdWrap.postUserFunc = derFunktionsname
electric-x ·

Danke!

leider läufts nicht so ganz. Das PHP Script lädt er schon mal rein und hat auch das test echo mit ausgegeben. Leider setzt er aber nicht den ausgegebenen Dateinamen ein.

Mein Typoscript sieht so aus (Auszug):

page.includeLibs.random_seite = fileadmin/random.php

page = PAGE
page {
   typeNum = 0
#   bodyTag = <body bgcolor ="#99CB00" topmargin="0" leftmargin="0">

   10 = TEMPLATE
   10.template = FILE
   10.template.file.import.stdWrap.postUserFunc = random_seite

PHP Script random.php

<?php

function random_seite()
{
$page = rand(1, 2);
return "template".$page.".php";
}

?>
electric-x ·

achja habs einmal mit StdWrap und auch ohne versucht. Komischerweise gibt er auch nicht "no template file found" oder so aus was er ja sonst auch macht oder?

electric-x ·

Hast recht.

waren im fileadmin. hat aber trotzdem nichts verändert *grübel*

<?php

function random_seite()
{
$page = rand(1, 2);
return "fileadmin"."/"."template".$page.".php";
}

?>

sieht nun so aus meine random.php

just2b ·

hab jetzt leider keine Lösung, aber wollte nur mal eines anmerken: Ist dir bewusst, dass das Caching ausgeschaltet sein muss und das Konsequenzen hat? > viel langsamer, indexed_search geht nicht

lg georg