TYPO3 – for each Schleife Random Sortierung ausgeben

Leider ist es mit dem normalen TYPO3 Fluid nicht möglich eine for each Schleife als Random Sortierung auszugeben.
Hier benötigen wir die Extension VHS um das Fluid um weitere ViewHelper zu erweitern.

Installiert somit die Extension: VHS
Fügt dann in dem Fluid-Template wo die for each Schleife liegt, den namespace von der Ext:VHS hinzu:
{namespace v=FluidTYPO3\Vhs\ViewHelpers}

Tauscht nun den Fluid „f:for each“ Teil aus:

<f:for each="{addresses->v:iterator.sort(order: 'SHUFFLE', sortBy: 'company')}" as="address" iteration="iterator">

Info: Name der Variable tauschen und den sortBy Feld bearbeiten.

Erklärung:
order
ASC, DESC, RAND or SHUFFLE. RAND preserves keys, SHUFFLE does not – but SHUFFLE is faster

Beispiel/Beschreibung:
https://fluidtypo3.org/viewhelpers/vhs/master/Iterator/SortViewHelper.html

Da die meisten Fluid-Template in den Cache abgelegt werden, solltet Ihr ggf. das Template noch als „uncache“ ausgeben.
Dafür stellt die EXT:VHS einen weiteren VH zur Verfügung: v:render.uncache

Die komplette for:each sieht dann bei mir so aus:

<f:for each="{addresses->v:iterator.sort(order: 'SHUFFLE', sortBy: 'company')}" as="address" iteration="iterator">
     <v:render.uncache partial="ListItem" arguments="{_all}"/>
</f:for>

Nun sollte sich bei jedem Browser-Reload die Ausgaben unterscheiden.

Eure Meinung zu dem Artikel ist gefragt! Schreibt mir ein Kommentar

Hat Euch der Artikel weitergeholfen oder gefallen?
Ich freue mich auf einen Blick auf meine Amazon-Wunschliste. Vielen Dank!

Hat Euch der Artikel geholfen oder gefallen?
Ich freue mich auf einen Blick auf meine Amazon-Wunschliste.
Vielen Dank!


Ich bin TYPO3 Freelancer, TYPO3-Entwickler, Web-Entwickler und Frontend-Entwickler. Ich arbeite im und für das Web seit 2004.
Mehr Infos zu der TYPO3 Internet-Agentur INGENIUMDESIGN.

Besucht auch unser TYPO3 Hilfe Forum.

Leave a Reply

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

2 Kommentare

  1. Sebastian

    Lieber Sebastian,
    danke für den Artikel und danke, dass du mich auf dem Laufendem hältst. Ich konnte dadurch eine Menge Neues dazu lernen.

    Gruß

  2. TYPO3-Entwickler

    Laut Doku des Uncache ViewHelpers wird nur der Inhalt neu gerendert – die zufällige Sortierung über for müsste also mit in das Partial, der Aufruf des Partials innerhalb von for dürfte keine zufällige Ausgabe bei jedem Page Reload erzeugen, sofern Caching an sich aktiv ist.

    Zudem finde ich den Ansatz strukturell kritisch – die Steuerung der Sortierung von Daten ist eine typische Controller-Aufgabe und gehört nicht ins Template.
    Im Controller hätte man dann auch die Möglichkeit, wenigstens ein kurzzeitiges Caching zu ermöglichen. Seiten mit höherem Traffic haben durch solche Maßnahmen ansonsten eine sehr große Last – hier würde schon eine Caching-Zeit von wenigen Sekunden merklich entlasten.

Next ArticleGoogle - neue Attribute für Links