Wie resettet man die einmal ausgewählte Sortierung?

Hallo zusammen,

ich habe in vier Kategorien über die Schnellsortierung eine vorausgewählte Sortierung eingestellt. Das funktioniert auch, wenn ich durch die Kategorien durchklicke ist überall die richtige Sortierung voreingestellt. Sobald ich aber nun manuell die Sortierung einer Kategorie ändert, merkt sich OXID diese Sortierung und stellt diese für alle Kategorien fest ein.

Das Löschen der OXID-Cookies löst das Problem. Die Information wird also irgendwo in der Session gespeichert.

Meine Frage: Gibt es eine Möglichkeit (entweder Hausmittel oder durch Überschreiben irgendeiner Funktion) dem OXID dieses Verhalten abzugewöhnen? Am liebsten hätte ich, wenn sich OXID die Sortierreihenfolge gar nicht erst merken würde.

Danke und viele Grüße,

Thorsten

Danke - aber das war mir alles zu kompliziert/unpraktisch. Ich habe es nun so gelöst (Oxid 6.1.x):
PHP: unset($_SESSION[‘aSorting’]);

Vielleicht hilft das ja jemanden.

Als Tipp für ältere OXID-Versionen: Einfach mit print_r($_SESSION); die Session-Einträge auslesen, dann kann man gezielt mit unset den richtigen (übergeordneten) Zweig komplett löschen.

1 Like

Die Möglichkeit des Session-Wertes wird ja auch im verlinkten Thema beschrieben. Dann schreibe doch bitte für die Leute, die mit Programmierung nicht viel am Hut haben, wo Du den Code-Schnipsel eingesetzt hast.

Das ist richtig, allerdings führt (vermutlich anders als beim Attribute-Filter) ein einfaches $_SESSION["wert"] = "";
zu einer Exception
Unknown column '' in 'order clause'

Hier muss man schon gezielt den Pfad aus der Session mit unset löschen.

Wo genau ich ihn am besten hinpacke muss ich noch rauskriegen. Im Moment ist er in:
/source/Application/views/wave/tpl/page/list/list.tpl wie folgt drin:

[{php}]
	if(!isset($_GET['pgNr'])){unset($_SESSION['aSorting']);}
[{/php}]

Das soll bewirken, dass man innerhalb einer Kategorie die Sortierung ändern kann und OXID sich das auch solange merkt, bis man die Kategorie wechselt - in dem Fall soll wieder die voreingestellte Sortierung der Schnellsortierung greifen. Die Wirkung tritt aber leider mit einem Klick Verzögerung ein. Das müsste also irgendwo eingesetzt werden, bevor die eigentliche Sortierung stattfindet. Und natürlich werde ich dann mit einem Mini-Modul eine Core-PHP erweitern statt das direkt ins Template zu schreiben. Aber so kann man schneller austesten, wo es grob zu stehen hat, damit es klappt. tmp leeren kann man sich so auch sparen.

Ich werde das hier auf jeden Fall noch ergänzen, sobald ich die korrekte Stelle gefunden habe.

So, das Thema ist für mich abgeschlossen. Ich habe es am Ende ganz anders gelöst. Funktioniert (für mich) und ist ja evt. für andere interessant.

Ziel war beim Klick auf die Kategorien wieder die in der Schnellsortierung vorgenommene Sortierung zu erhalten, auch wenn der Besucher vorher manuell eine andere Sortierung vorgenommen hatte.

Mit folgender Änderung im Template
/source/Application/views/wave/tpl/widget/header/categorylist.tpl

den Link für die Kategorien

href="[{$ocat->getLink()}]"

ändern in:

href="[{$ocat->getLink()}]?listorderby=[{$ocat->oxcategories__oxdefsort->value}]&listorder=[{if $ocat->oxcategories__oxdefsortmode->value==0}]asc[{else}]desc[{/if}]"