folgende Situation:
Ich habe eine Auflistung von Events, welche die aktuellsten Events auflisten soll.
Die Events haben den Nodetype “Vendor.Site:Document.Event.Entry”
Jedes Event beinhaltet einen Nodetype “Vendor.Site:Content.EventHeading” in welchem das Datum des Events in eine Property “dateStart” eingetragen wird.
Nun zu meiner Frage:
Kann ich die Events einfach beim “Holen” schon sortieren:
${q(site).find(’[instanceof Vendor.Site:Document.Event.Entry]’).sort(‘Vendor.Site:Content.EventHeading[dateStart]’, ‘ASC’)}
oder muss ich diese nachher sortieren?
so einfach geht das meines Wissens leider nicht. Wenn das “dateStart” direkt in deinem Event wäre, kannst du einfach die Sort-Fuktion nutzen, um die Sortierung vorzunehmen. Wenns für dich also irgendwie möglich wäre, pack das dateStart vielleicht einfach in “Event.Entry”, wonach du auch in deiner Query suchst.
Sollte das für dich aus irgendwelchen Gründen nicht möglich sein, könntest du auch mit einer eigenen FlowQueryOperation arbeiten.
Also Quasi “q(site).find(…).customSortQuery(…).get()” oder so ähnlich.
Die eigenen Queries kannst du dir ganz einfach in PHP schreiben. Eine Anleitung dazu findest du hier: https://docs.neos.io/cms/manual/extending-neos-with-php-flow/custom-flowquery-operations
Dort bekommst du dann Quasi das Ergebnis der vorherigen Operation (find()) als Array mit Nodes, kannst über diese iterieren und so sortieren.
Eventuell kann das aber einen Performance-Nachteil haben. Je nachdem, wie viele Nodes sortieret werden müssen. Das musst du für dich selbst ausprobieren und rausfinden.
Ich hoffe, das hilft dir irgendwie weiter. Ansonsten melde dich gerne nochmal!
Ich würde auch empfehlen die relevanten Basisdaten in den Eventtype zu ziehen.
Was sonst theoretisch auch gehen müsste ist, direkt die Query auf die EventHeadings zu machen und sortieren und dann mit der parent-Operation alle Events zu bekommen.