Sortierung einer Kategorie aufheben

[QUOTE=patchwork.de;187841]gemach, gemach … der Bug steht ja erst seit 2014 im bug-tracker :smiley:
als workaround kannst du unter Grundeinstellungen -> Einstellungen -> Artikel auch andere Sortierungen eintragen. Funktionieren aber auch teilweise im Flow nicht :D[/QUOTE]

Hi patchwork.de, danke für die Antwort.

Diese Einstellung hab ich auch schon gesehen, nur leider passt das nicht ganz für das was ich vorhabe. Wenn ich da jetzt kein Riesenbrett vorm Kopf habe dann ist es so: der Benutzer kann zwar zwischen verschiedenen Sortierungen hin und her springen, aber nicht zur Standardsortierung zurückkehren, also nach der DB-Spalte oxarticles.oxsort.

Ich hab schon versucht, oxsort in dieser Einstellung einzutragen, das wird auch auf der Seite angezeigt, aber es scheint keinen Effekt zu haben.

Hintergrund ist, dass wir ein Skript haben, das die Artikel nach einem komplizierten Punktesystem sortiert und mein Vorgesetzter legt viel Wert darauf, dass die Kunden auch zu dieser Standardsortierung zurückkehren können.

Aber ich glaube, ich habe inzwischen selbst eine Quick-and-dirty-Lösung gefunden. In application/controllers/oxubase.php habe ich die Methode getUserSelectedSorting wie folgt angepasst:

    public function getUserSelectedSorting()
    {
        $aSorting = null;
        $oStr = getStr();
        $oConfig = oxRegistry::getConfig();
        $aSortDirections = array('desc', 'asc');

        $sSortBy = $oConfig->getRequestParameter($this->getSortOrderByParameterName());
        $sSortDir = $oConfig->getRequestParameter($this->getSortOrderParameterName());

        if ($sSortBy && oxDb::getInstance()->isValidFieldName($sSortBy) && $sSortDir
            && oxRegistry::getUtils()->isValidAlpha($sSortDir)
            && in_array($oStr->strtolower($sSortDir), $aSortDirections)
            && in_array($sSortBy, oxNew('oxArticle')->getFieldNames())
        ) {
            $aSorting = array('sortby' => $sSortBy, 'sortdir' => $sSortDir);
        } else if ($sSortBy === 'reset') {
            oxRegistry::getSession()->deleteVariable('aSorting');
        }

        return $aSorting;
    }

(Der else-if-Zweig ist neu)

Dann habe ich an geeigneter Stelle einen Link eingebaut, der den GET-Parameter listorderby=reset übergibt.

Kann man das so machen? Zumindest beim ersten Durchklicken scheint es zu funktionieren, allerdings ist PHP nicht gerade meine Muttersprache, daher weiß ich nicht, ob ich mir da nicht Probleme einhandle, an die ich momentan nicht denke.

1 Like