Suchergebnisse sortieren

Hi,

im Backend kann man ja die Felder festlegen, nach denen die Suchergebnisse sortiert werden (z.B. oxtitle, oxvarminprice, etc.).

Allerdings werden dann immer alle Möglichkeiten sowohl ab- als aufsteigend angezeigt, was ja auch normalerweise sinnvoll und wünschenswert ist.

ABER: Ich möchte z.B. die Auswahl “Bewertung” (oxrating) ausschließlich absteigend anzeigen lassen. So dass die Artikel mit den besten Bewertungen oben stehen. Die umgekehrte Anzeige (aufsteigend) möchte ich hingegen komplett aus dem Template rausnehmen.

Hat jemand eine Idee wie ich das bewerkstelligen könnte?

Vielen Dank,
Thomas

Hi Thomas :slight_smile:

das ist einfach. Pass einfach dein Template an und nimm die aufsteigende Sortierung raus.

Im Standard Azure Theme ist die Sortierung wie folgt umgesetzt:


[{foreach from=$oView->getSortColumns() item=sColumnName}]
                <li class="desc">
                    <a href="[{$oView->getBaseLink()|oxaddparams:"ldtype=$_listType&_artperpage=$_artPerPage&$_sortColumnVarName=$sColumnName&$_sortDirectionVarName=desc&pgNr=0&$_additionalParams"}]" [{if $oView->getListOrderDirection() == 'desc' && $sColumnName == $oView->getListOrderBy()}] class="selected"[{/if}]><span>[{ oxmultilang ident=$sColumnName|upper }]</span></a>
                </li>
                <li class="asc">
                    <a href="[{$oView->getBaseLink()|oxaddparams:"ldtype=$_listType&_artperpage=$_artPerPage&$_sortColumnVarName=$sColumnName&$_sortDirectionVarName=asc&pgNr=0&$_additionalParams"}]" [{if $oView->getListOrderDirection() == 'asc' && $sColumnName == $oView->getListOrderBy()}] class="selected"[{/if}]><span>[{ oxmultilang ident=$sColumnName|upper }]</span></a>
                </li>
            [{/foreach}]

Viele liebe Grüße,
indianer3c

Hi indianer3c,

danke für deinen Vorschlag, ist aber nicht ganz so einfach.

Und zwar möchte ich manche Felder nach wie vor auf- und absteigend anzeigen lassen, andere wiederum nur absteigend.

Konkret sollte das z.B. so aussehen:

  • Name absteigend
  • Name aufsteigend
  • Preis absteigend
  • Preis aufsteigend
  • Bewertung absteigend

Hi Thomas,

da die Template Dateien über Smarty: PHP Template Engine bei OXID laufen kannst du dies problemlos mit einer Smarty Bedingung Prüfung abfangen

Wenn Variable $sColumnName ungleich oxrating,
dann zeige aufsteigende Sortierung an.

Viele liebe Grüße,
indianer3c

Danke, genau so.

Ich bin aber leider programmiertechnisch nicht so fit, um das hinzukriegen.

Wie würde denn die Codezeile am Beispiel oxrating konkret aussehen?

Danke,
Thomas


[{foreach from=$oView->getSortColumns() item=sColumnName}]
                <li class="desc">
                    <a href="[{$oView->getBaseLink()|oxaddparams:"ldtype=$_listType&_artperpage=$_artPerPage&$_sortColumnVarName=$sColumnName&$_sortDirectionVarName=desc&pgNr=0&$_additionalParams"}]" [{if $oView->getListOrderDirection() == 'desc' && $sColumnName == $oView->getListOrderBy()}] class="selected"[{/if}]><span>[{ oxmultilang ident=$sColumnName|upper }]</span></a>
                </li>
[{if $sColumnName != 'oxrating'}]
                <li class="asc">
                    <a href="[{$oView->getBaseLink()|oxaddparams:"ldtype=$_listType&_artperpage=$_artPerPage&$_sortColumnVarName=$sColumnName&$_sortDirectionVarName=asc&pgNr=0&$_additionalParams"}]" [{if $oView->getListOrderDirection() == 'asc' && $sColumnName == $oView->getListOrderBy()}] class="selected"[{/if}]><span>[{ oxmultilang ident=$sColumnName|upper }]</span></a>
                </li>
[{/if}]
            [{/foreach}]

Wow, doch so einfach! Hab irgendwie viel zu kompliziert gedacht…

Anyway, DANKE indianer3c, du bist der Beste!

Erledigt.

Gerne doch :slight_smile: