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.
Krypto-Donate an:
BTC: 1Emte6AxnifWqt7N8vSqSF7JK1K6CYuBj4
LTC: Lfs2F8DabYuunxYw2ym9CRLAMBKZUaaBNh
ETH: 0x95298b41564f070bc83bc76159bb7804d26483d6
Vielen Dank!

Ich bin freiberuflicher TYPO3-Entwickler, Web-Entwickler und Frontend-Entwickler. Ich arbeite im und für das Web etwas mehr als 12 Jahre. Mehr Infos zu der TYPO3 Internetagentur - INGENIUMDESIGN.

Leave a Reply

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

1 Kommentar

  1. 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