In Bearbeitung [SHOP-1695] Sortierung der Bewertungen

Stephs182

Sehr aktives Mitglied
21. Januar 2015
268
28
Luckau NL
Gibt es eine Möglichkeit im Shop 4 die Bewertungen (Neuste zuerst) zu Sortieren?

Ausserdem ist bei uns nun teilweise ein kleiner Fehler... Wir haben Einzelartikel zu einem Artikel mit Variationen zusammen gefasst und uns ein kleines Tool geschrieben was die Bewertungen aus den Kindern in die Väter verschiebt.

In der DB kurz geschaut ob es eine Bewertung eines Kindes gibt, wenn ja -> dann die ArtikelD der Berwertung durch die des Vaterartkel ersetzen. Nun zeigt er aber wie hier: https://www.outdoorfan.de/US-Rucksack-ASSAULT-large-LASER-CUT-versch-Farben Teilweise die Bewertungen zwar an, hat aber oben drüber zu stehen (0 Bewertungen).

Ich habe schon geschaut ob ich es in der Tabelle tArtikel beim Artikel einen Zähler gibt, aber da bin ich nicht fündig geworden.

Muss ich dazu die durchschnittsbewertung in tArtikelext neuberechnen und schreiben?
 
Zuletzt bearbeitet:

martinwolf

Offizieller Service Partner
SPBanner
6. September 2012
3.724
355
Der Shop bietet im Standard eine Sortiermöglichkeit im Template an. Jedoch lässt sich diese nicht im Admin vordefinieren. Im Standard sortiert der Shop nach Datum aufsteigend, also von alt nach neu.

tArtikelext enthält die Durschschnittsbewertung welche für die Ausgabe der Sterne effektiv verantwortlich ist. Diese Tabelle habt ihr vergessen zu pflegen.
 

Stephs182

Sehr aktives Mitglied
21. Januar 2015
268
28
Luckau NL
Ok, das dachte ich mir mit der Sortierung. Wie kann ich von neu nach alt Sortieren lassen? Ich nutze das Evo Template.

Die Durchschnittsbewertung werde ich gleich nach pflegen. Dann sollte es ja passen.
 

M.Stickel

Sehr aktives Mitglied
9. Februar 2016
298
39
Hi @Stephs182,
man könnte einfach in der artikel.php (ca. Zeile 160) Die Standardsortierung ändern:
Code:
$nSortierung = verifyGPCDataInteger('sortierreihenfolge');
$nSortierung = empty($nSortierung) ? 2 : $nSortierung;

Ist aber ungetestet.
Im Idealfall schaust du, dass die Änderung updatesicher ist (Plugin/Templateanpassung).
 

M.Stickel

Sehr aktives Mitglied
9. Februar 2016
298
39
Die Anweisung bewirkt, dass wenn keine Eingabe des Kunde erfolgt die Standardsortierung auf "2" (nach Datum, absteigend) gesetzt wird. Hast du mal Cookies und Cache gelöscht?
 

Stephs182

Sehr aktives Mitglied
21. Januar 2015
268
28
Luckau NL
Ja habe ich alles gelöscht. Auch template cache... neuen Browser genommen, der die Seite noch nie gesehen hat... bringt alles nix, die Sortierung bleibt gleich.
 

Stephs182

Sehr aktives Mitglied
21. Januar 2015
268
28
Luckau NL
Ich habe es doch geschafft. In der pagination.tpl habe ich nun diese Zeile gesetzt:

{assign var=ratings_nSortByDir value=$ratings_nSortByDir|default:1}
 

beautyloungeplattling

Gut bekanntes Mitglied
24. Juni 2016
119
0
Wäre für uns auch interessant wenn man die Sortierung der Bewertungen standardmäßig von neu nach alt und nicht wie jetzt von alt nach neu. Gibts da schon infos ob das Ticket bearbeitet wird oder hat vielleicht jemand schon eine Lösung wie man das Templateseitig lösen könnte?
 

Rico Giesler

Offizieller Service Partner
SPBanner
10. Mai 2017
13.247
1.526
Der Status des Tickets ist "In Arbeit". Es gibt allerdings noch keine Zielversion.
 

kappenbauer

Aktives Mitglied
6. August 2018
2
0
Hallo zusammen,

Gibt es hier bereits eine Lösung bzw. gibt es noch Bedarf?
Da Shopstandart "älteste zuerst" ist, sollte es doch reichen in der reviews.tpl an der entsprechenden Stelle die Reihenfolge in der foreach zu ändern.

Aus:
Code:
{foreach name=artikelbewertungen from=$ratingPagination->getPageItems() item=oBewertung}

mache:
Code:
{foreach name=artikelbewertungen from=$ratingPagination->getPageItems()|@array_reverse item=oBewertung}

Sollte das nicht eigentlich reichen?

Gruß,
kappenbauer
 

css-umsetzung

Offizieller Service Partner
SPBanner
6. Juli 2011
8.706
2.733
Berlin
Firma
css-umsetzung
Nein das wird nicht reichen, da durch das Pagination ja z.B. 10 Einträge ausgelesen werden, das heißt wenn du 20 Einträge hast, dann sortiert er nur die 10 die er aber schon in der falschen Reihenfolge geholt hat.
hiermit verschlimmerst du das ganze also wenn es eine Pagination gibt.
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.795
316
Düsseldorf
So, ich habe einen Lösungsvorschlag bis zur 5.0 (allerdings nicht Updatefähig):

In der class.JTL-Shop.Pagination.php sucht Ihr
PHP:
public function loadParameters()

Diesen Code ...
PHP:
        $this->nSortByDir =
            isset($_GET[$this->cId . '_nSortByDir'])     ? (int)$_GET[$this->cId . '_nSortByDir'] : (
            isset($_POST[$this->cId . '_nSortByDir'])    ? (int)$_POST[$this->cId . '_nSortByDir'] : (
            isset($_SESSION[$this->cId . '_nSortByDir']) ? (int)$_SESSION[$this->cId . '_nSortByDir'] :
            0 ));

... ersetzt Ihr hiermit:
PHP:
        // Xantiva: Default Sortierung bei Ratings auf Datum absteigend festlegen ...
        $defaultnSortByDir = $this->cId == "ratings" ? 1 : 0;

        $this->nSortByDir =
            isset($_GET[$this->cId . '_nSortByDir'])     ? (int)$_GET[$this->cId . '_nSortByDir'] : (
            isset($_POST[$this->cId . '_nSortByDir'])    ? (int)$_POST[$this->cId . '_nSortByDir'] : (
            isset($_SESSION[$this->cId . '_nSortByDir']) ? (int)$_SESSION[$this->cId . '_nSortByDir'] :
            $defaultnSortByDir ));

Die ganzen Sortierungen in der class.JTL-Shop.Bewertung.php sind quasi umsonst, da die Paginierung sich der Sortierung selber annimmt. Und wenn bislang kein Wert in der Session oder in URL-Parametern steht, dann war der Defaultwert eben 0 => Datum aufsteigend

Jetzt wird bei einer Paginierung für "ratings" (Bewertungen) der Defaultwert 1 => Datum absteigend verwendet.

Feedback ist erwünscht 😉

(Getestet mit der 4.06 Build 11)
 
  • Gefällt mir
Reaktionen: kappenbauer

kappenbauer

Aktives Mitglied
6. August 2018
2
0
So, ich habe einen Lösungsvorschlag bis zur 5.0 (allerdings nicht Updatefähig):

In der class.JTL-Shop.Pagination.php sucht Ihr
PHP:
public function loadParameters()

Diesen Code ...
PHP:
        $this->nSortByDir =
            isset($_GET[$this->cId . '_nSortByDir'])     ? (int)$_GET[$this->cId . '_nSortByDir'] : (
            isset($_POST[$this->cId . '_nSortByDir'])    ? (int)$_POST[$this->cId . '_nSortByDir'] : (
            isset($_SESSION[$this->cId . '_nSortByDir']) ? (int)$_SESSION[$this->cId . '_nSortByDir'] :
            0 ));

... ersetzt Ihr hiermit:
PHP:
        // Xantiva: Default Sortierung bei Ratings auf Datum absteigend festlegen ...
        $defaultnSortByDir = $this->cId == "ratings" ? 1 : 0;

        $this->nSortByDir =
            isset($_GET[$this->cId . '_nSortByDir'])     ? (int)$_GET[$this->cId . '_nSortByDir'] : (
            isset($_POST[$this->cId . '_nSortByDir'])    ? (int)$_POST[$this->cId . '_nSortByDir'] : (
            isset($_SESSION[$this->cId . '_nSortByDir']) ? (int)$_SESSION[$this->cId . '_nSortByDir'] :
            $defaultnSortByDir ));

Die ganzen Sortierungen in der class.JTL-Shop.Bewertung.php sind quasi umsonst, da die Paginierung sich der Sortierung selber annimmt. Und wenn bislang kein Wert in der Session oder in URL-Parametern steht, dann war der Defaultwert eben 0 => Datum aufsteigend

Jetzt wird bei einer Paginierung für "ratings" (Bewertungen) der Defaultwert 1 => Datum absteigend verwendet.

Feedback ist erwünscht 😉

(Getestet mit der 4.06 Build 11)

Hi Xantiva,

Danke erstmal für die Hilfe.
Werd ich die Tage mal austesetn 😉
Bin ja mal gespannt ob das im 5er Shop auch noch über die Session gemacht wird.

Gruß kappenbauer
 

Ähnliche Themen