Het criterium {par ...}
geeft de volgorde van presentatie van de resultaten uit een lus aan.
Het Franse woord par betekent "door", "bij","op","via","per", enz.
Zo kun je de volgorde bijvoorbeeld rangschikken {par date}
(op datum), {par date_redac}
(op redactiedatum) of {par titre}
(op titel), …
Sorteren op nummer
Het is mogelijk de weergave van de verschillende elementen aan te sturen met behulp van een numerieke prefix in één van hun velden (titel, boventitel,…).
Het formaat van die prefix is: een getal van n cijfers, gevolgd door een punt of een rechter haakje ")
", gevolgd door een spatie.
voorbeelden:
015.
Een titel
51)
Nog een titel
De schrijfwijze van de sorteeropdracht is:
{par num
veldnaam
}
.
Om bijvoorbeeld op het nummer in de titel te sorteren, wordt dat {par num titre}
. Artikelen die geen (juiste) prefix in hun titel hebben, worden niet gesorteerd.
Misschien wil je die prefix liever niet in je titel op de publieke site laten zien. Dat kan door een voorwaarde toe te voegen aan het baken:
[(#TITRE|supprimer_numero)]
.
Let op:
- de voorwaarde
{par num ...}
houdt ook rekening met alle veldwaarden die met een getal beginnen; dus{par num surtitre}
houdt rekening met de boventitel «14 juli 1789
» en plaatst het tussen «10. Een boventitel
» en «20. Een andere boventitel
». - een prefix die met een
0
(nul) begint, zal door{par num titre}
vóór de prefix met één nul minder worden geplaatst:00000. Titel…
,0000. Titel…
,000. Titel…
,0. Titel…
Sorteren op taal en de alfabetische volgorde
In een meertalige site is de voorwaarde {par multi ...}
in staat te sorteren volgens de alfabetische volgorde per afzonderlijke taal. Bijvoorbeeld: {par multi titre}
. Zonder de toevoeging multi maakt de lus een alfabetische sortering van alle talen door elkaar.
Sorteren op meerdere velden
Je kunt meerdere opeenvolgende sorteringen opgeven. Door het schrijven van {par veld1, veld2}
geeft je twee opeenvolgende sorteringen aan: eerst worden de resultaten op veld1 gesorteerd, daarna op veld2 voor elementen met een identiek veld1. Je kunt zoveel velden opgeven als nodig is.
Bijvoorbeeld: {par date, titre}
sorteert de resultaten op datum (van oud naar jong) en binnen dezelfde datum op titel (van A tot Z).
Je kunt dit ook aangeven door meerdere keren de voorwaarde {par ...}
in één lus op te nemen.
Bijvoorbeeld: {par date} {par titre}
geeft hetzelfde resultaat als hierboven.
Let op:
Wanneer je de eerste schrijfwijze gebruikt samen met de voorwaarde {inverse}
, zal de omkering van de volgorde uitsluitend op het eerste veld worden toegepast. En bij deze volgende schrijfwijze {par date} {par titre} {inverse}
wordt de omkering uitsluitend op het veld titre
(dus van Z naar A) toegepast, terwijl de datum nog steeds van oud naar jong is).
Bij deze schrijfwijze {par date} {inverse} {par titre} {inverse}
worden beide sorteringen omgekeerd: van jong naar oud en van Z naar A.
Om het allemaal wat te vereenvoudigen is een verkorte schrijfwijze voor de sortering ingevoerd. Met {!par ...}
kun je één bepaald sorteercriterium inverteren. Bijvoorbeeld: {!par date} {par num titre}
laat de resultaten van jong naar oud zien en volgens oplopende prefix voor artikelen binnen dezelfde datum.
Al met al is het dus zaak de juiste schrijfwijze te kiezen om het gewenste sorteerresultaat te verkrijgen.
Dynamisch sorteren
De voorwaarde {par ...}
accepteert ook een dynamisch doorgegeven naam van een SQL-veld. Met name het baken #ENV
kan daarvoor worden gebruikt.
Bijvoorbeeld: {par #ENV{variabele}}
sorteert op de waarde van «variabele» die in de URL kan zijn doorgegeven met &variabele=titre
, op voorwaarde dat die waarde daadwerkelijk overeen komt met de naam van een SQL-veld van die lus.
Dat betekent dus dat &variabele=num titre
niet werkt, want er is geen SQL-veld met naam num titre
. In dat geval kun je gebruik maken van de voorwaarde {tri}
.
Willekeurige volgorde
Wanneer je een willekeurige volgorde wilt toepassen, gebruik je de voorwaarde {par hasard}
.
Elementen van een zoekopdracht sorteren op hun relevantie
Om de resultaten van een zoekformulier op hun relevantie te sorteren, gebruik je de voorwaarde {par points} {inverse}
; een {par points}
zou eerst die met de minste relevantie laten zien, en dat wil je vast niet!