Zum Inhalt springen

zufällige Reihenfolge der CEs

Erstellt am 20. Februar 2009 · 7 Antworten · letzte Antwort am 19. März 2010

Tags: Frage

toschntuach ·

Hallo Forum!

Ohne TemplaVoila kann ich ja mit diesem Snippet ...

    30 = CONTENT
30 {
    table = tt_content
    select {
        # Inhalte aus PID
        pidInList = xyz
        orderBy = RAND()
        max = 1
        languageField = sys_language_uid
    }
    renderObj < tt_content
    renderObj.stdWrap.wrap = <div class="blabla">|</div>
    renderObj.stdWrap.required = 1
}

... (danke liebes Internet/Forum/sk-typo3.de, ...) ein zufälliges Inhaltselement auslesen...

Ich hab nun 2 Dinge vor:

1. Bei einem Projekt mit TemplaVoila 1 zufälliges Element einer Seite auf allen Seiten ausgeben...
2. Alle Inhalte einer Seite in zufälliger Reihenfolge ausgeben...

Ersteres ist auch weiter kein Problem, mit einer Einschränkung: Wenn ich ein Inhaltselement lösche, steht es für das Snippet trotzdem noch zur Auswahl, weil der Inhalt ja nur aus der TV-Referenz genommen, aber nicht gelöscht wird... 😢 Kann ich das unterbinden? Dass er also nur noch "aktuelle" Inhalte verwendet?

Beim 2. scheitere ich kläglich, ich hab leider überhaupt keine Idee...

Weiß jemand Rat?

Danke,
Roman

froemken ·

Mach in Dein select noch das rein:

where = deleted=0 AND hidden=0

und dann werden Dir auch die gelöschten Objekte nicht mehr angezeigt.

OHNE TemplaVoila könnt Ihr Euch den Inhalt randomized anzeigen lassen:

styles.content.get.select.orderBy = RAND()
page.20 < styles.content.get

MIT TemplaVoila? Keine Ahnung. Müsste man jetzt mal die *pi1.php von TemplaVoila durchgehen und mal schauen wo und wie dort der Content geladen wird. Vielleicht gibts ja auch einen Hook.

Stefan

fkotzek4 ·

Hallo,

gibt es eine Lösung für den 2. Problempunkt mit TemplaVoila? Würde mich nämlich auch interessieren.

Gruß
fkotzek4

froemken ·

Ich hab das ganze mal ganz grob zusammen geklickert:

10 = CONTENT
10 {
table = tt_content
select.orderBy = RAND()
select.languageField = sys_language_uid
}

Das habe ich bei mir in TemplaVoila für das ContentElement eingetragen. Keine Ahnung, ob die Sprachen sauber übernommen werden. Hab auf jeden Fall 5 CEs angelegt:
1
2
3
5
4

und sie werden mit folgendermaßen auf der Wbseite angezeigt:

5
4
2
3
1

Demnach funktioniert das Script, aber es ist nicht weiter getestet...

Stefan

fkotzek4 ·

Hallo,

vielen Dank für die Antwort.
Das hat mir schon sehr weiter geholfen, aber kann man das auch explizit nur für eine Seite einstellen?
Ich stehe da wohl gerade auf dem Schlauch.

Gruß
fkotzek4

froemken ·

Also entweder arbeitest du dann mit if und musst dann die ID der gewünschten Seite mit in das TS reinbauen oder du baust dir eine Kopie von dem Template und fügst es nur bei dieser einen Seite in die Seiteneigenschaften ein.