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

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

electric-x ·

stimmt die gibt es ja.

aber was just2b geschrieben hat leuchtet ein. Kein caching ist natürlich mist für die besucher wenn die seite immer neu runtergeladen wird... Aber es muss doch irgend eine lösung geben dafür.

Hintergrund ist der warum ich 2 Templates verwenden möchte: Es geht darum, dass oberhalb der Seite und rechts von der Seite verschiedene contents erscheinen müssen und diese in 2 Kampagnen erscheinen (2 Templates). Abhängig von der Kampagne erscheint dann oben "und" rechts immer der jeweilige inhalt. Das ganze soll mit einem random versehen sein. mache ich das ganze mit random content elementen wird dies wohl nicht gehen, da das eine content elemente abhängig vom anderen erscheinen muss...

just2b ·

wie gesagt: am besten nimm template selector o.ä. wenn du bestimmte Seiten ein anderes Design geben willst. der rest wird IMO eher die besucher verwirren

georg

electric-x ·

ich habe es jetzt über ein TS ansatzweise so geschafft wie ich das will. Random Inhaltselemente und über dieses alles in divs und css gesteuert. Nur es soll ja nicht immer alles sofort 100% funktionieren - nun stimmt wieder was nicht genau.

folgendes TS:

TOP = CONTENT
TOP {
table = tt_content
select {
pidInList = 151
orderBy = rand()
max = 2
where = colPos= 3
}
}

gut er zieht also aus meinem Menüpunkt 151 den Inhalt (Rand) und sortiert den via random - nur er hat ein Inhaltselement. Jetzt stellt sich die Frage wo kann bzw. was muss ich tun damit das TS sich per Zufall von 2 Menüpunkten zieht?

electric-x ·

so habe nun das ganze noch abgeändert:

TOP = CONTENT
TOP {
table = tt_content
select {
pidInList = 151, 152
orderBy = rand()
max = 2
where = colPos= 3
}
}

durch das pidInList = 151, 152 dachte ich würde er die inhaltselemente zufällig dann aus 151 oder 152 sich ziehen. ist leider nicht so 🙁