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.
Random Template - aber wie?
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
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.
#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.
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
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";
}
?>
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?
Liegen den die Templates direkt im root-Verzeichnis von TYPO ? Denn du gibst ja keinen Pfad mit an für die Templates.
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
bin gerade auch etwas ratlos, hast du nochmal mit und ohne stdWrap probiert?
ja *seufz* hat aber nicht geklappt.
Hat evtl. jemand eine Idee für eine andere Lösung?
*nach oben schieb*
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
Es gibt doch eine Extension "Template Selector" oder so ähnlich - vielleicht lässt sich diese aufbohren?
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...
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
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?
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 🙁