Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Sortierung nach Preis - Sonderangebote berücksichtigen

    demoncleaner

    • Fördermitglied
    • Beiträge: 505
    Habe eine eigentlich ganz simple Frage. Der Titel sagt im Prinzip schon alles.
    Wieso wird, wenn ich nach Preis sortiere in einer Kategorie, ein Sonderangebot nicht nach seinem aktuellen Preis sortiert, sondern nach dem Basispreis? Macht das Sinn? Eigentlich nicht oder? Wenn ich jetzt einen Haufen Sonderangebote habe, dann will ich auch, dass die weit oben angezeigt werden. Hat jemand eine Idee wo ich ansetzen muss um das anzupassen? Habe hier im Forum dazu komischerweise nichts gefunden. Bin ich da auf dem Holzweg? Das muss doch vorher auch schon mal jemanden gestört haben.

    Wäre super wenn jemand einen Ansatz hat oder mich aufklären kann wieso das überhaupt so gehandhabt wird.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=30821.0

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    Re: Sortierung nach Preis - Sonderangebote berücksichtigen
    Antwort #1 am: 08. August 2014, 18:38:04
    Das ist so weil die Sortierung nach "Preis" nach products_price geht und Sonderpreise nicht berücksichtigt werden.
    Schau mal in den Quellcode des Dropdown im Backend was da bei "value" steht wenn nach Preis sortiert wird.
    Das müßte man in dem Dropdown und in der /includes/modules/default.php ändern (Stichwort: products_sorting).

    Wer will kann dazu ja ein Ticket erstellen (nicht vom Namen "Bug-Tracker" verwirren lassen).

    Gruß,
    noRiddle

    demoncleaner

    • Fördermitglied
    • Beiträge: 505
    Re: Sortierung nach Preis - Sonderangebote berücksichtigen
    Antwort #2 am: 09. August 2014, 09:44:07
    Vielen Dank für die Antwort noRiddle. Vom Prinzip her verstehe ich warum das so ist. Ich meinte halt nur, ob es nicht eben an genau der Stelle besser wäre die Sonderpreise zu berücksichtigen, da das ja nun mal der Preis ist für den ich das Produkt erwerben kann und dann eine entsprechende Sortierung nach diesem Preis auch mehr Sinn macht, als nach dem Basispreis. Besonders wenn Sonderpreis und Basispreis sehr stark voneinander abweichen.

    Ich habe mir das mal angeschaut, habe es aber leider nur so halb hinbekommen.

    Erstmal die Ergänzung des Dropdowns, so dass nach Sonderpreisen sortiert wird:

    Änderung an der admin/includes/modules/new_category.php

    Suche nach

    Code: PHP  [Auswählen]
    array('id' => 'p.products_price','text'=>TXT_PRICES),

    danach einfügen

    Code: PHP  [Auswählen]
    array('id' => 'ps.specials_new_products_price','text'=>TXT_SPECIAL_PRICE),

    Dann die Änderung damit diese Auswahl auch in der Sortierung Verwendung findet

    Änderung an der include/modules/default.php

    Suche nach

    Code: PHP  [Auswählen]
    p.products_price

    danach einfügen

    Code: PHP  [Auswählen]
    ps.specials_new_products_price

    Suche nach

    Code: PHP  [Auswählen]
    JOIN ".TABLE_PRODUCTS." p

    danach einfügen

    Code: PHP  [Auswählen]
    LEFT JOIN ".TABLE_SPECIALS." ps on ps.products_id = p.products_id

    Das Ergebnis davon ist, dass nun alle Produkte mit normalen Preisen erst richtig sortiert werden und danach alle mit Sonderpreisen. Es funktioniert wunderbar wenn alle meine Preise Sonderpreise sind. Dann wird, so wie ich das wollte, nur nach dem Sonderpreis sortiert. Wenn ich aber auch Artikel zu normalen Preisen drin stehen habe, dann funktioniert das nicht, weil erst die Artikel zum Normalpreis angezeigt werden und dann die mit Sonderpreisen.

    Kann mir jemand evtl. sagen wie ich die Abfrage abändern muss, damit dass dann am Ende wieder vermischt wird und zwar in der richtigen Reihenfolge? Ich kann dazu natürlich auch ein Ticket aufmachen, dachte aber ich versuchs mal und wäre jetzt schon fast da.

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    Re: Sortierung nach Preis - Sonderangebote berücksichtigen
    Antwort #3 am: 09. August 2014, 15:20:40
    Schnellschuß:
    Suche
    Code: PHP  [Auswählen]
    $sorting = ' ORDER BY '.$sorting_data['products_sorting'].' '.$sorting_data['products_sorting2'].' ';

    ersetze mit:
    Code: PHP  [Auswählen]
    //BOC respect specials (see below in $listing_sql), noRiddle
    //$sorting = ' ORDER BY '.$sorting_data['products_sorting'].' '.$sorting_data['products_sorting2'].' ';
    $eff_sort = ($sorting_data['products_sorting'] == 'p.products_price' ? 'smaller_price' : $sorting_data['products_sorting']);
    $sorting = ' ORDER BY '.$eff_sort.' '.$sorting_data['products_sorting2'].' ';
    //EOC respect specials (see below in $listing_sql), noRiddle

    Suche:
    Code: PHP  [Auswählen]
    $listing_sql = "-- /includes/modules/default.php
                      SELECT "
    .$select."
                             p.products_id,
                             p.products_ean,
                             p.products_quantity,
                             p.products_shippingtime,
                             p.products_model,
                             p.products_image,
                             p.products_price,
                             p.products_discount_allowed,
                             p.products_weight,
                             p.products_tax_class_id,
                             p.manufacturers_id,
                             p.products_fsk18,
                             p.products_vpe,
                             p.products_vpe_status,
                             p.products_vpe_value,
                             pd.products_name,
                             pd.products_description,
                             pd.products_short_description
                        FROM "
    .TABLE_PRODUCTS_DESCRIPTION." pd
                        JOIN "
    .TABLE_PRODUCTS." p
                             "
    .$from."
                       WHERE p.products_status = '1'
                         AND p.products_id = pd.products_id
                         AND pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                             "
    .$group_check."
                             "
    .$fsk_lock."
                             "
    .$where."
                             "
    .$sorting;

    ersetze mit:
    Code: PHP  [Auswählen]
    $listing_sql = "-- /includes/modules/default.php
                      SELECT "
    .$select."
                             p.products_id,
                             p.products_ean,
                             p.products_quantity,
                             p.products_shippingtime,
                             p.products_model,
                             p.products_image,
                             #p.products_price,
                             if(ps.specials_new_products_price < p.products_price, ps.specials_new_products_price, p.products_price) as smaller_price, #respect specials, noRiddle
                             p.products_discount_allowed,
                             p.products_weight,
                             p.products_tax_class_id,
                             p.manufacturers_id,
                             p.products_fsk18,
                             p.products_vpe,
                             p.products_vpe_status,
                             p.products_vpe_value,
                             pd.products_name,
                             pd.products_description,
                             pd.products_short_description
                        FROM "
    .TABLE_PRODUCTS_DESCRIPTION." pd
                        JOIN "
    .TABLE_PRODUCTS." p
    LEFT JOIN "
    .TABLE_SPECIALS." ps ON ps.products_id = p.products_id
                             "
    .$from."
                       WHERE p.products_status = '1'
                         AND p.products_id = pd.products_id
                         AND pd.language_id = '"
    .(int) $_SESSION['languages_id']."'
                             "
    .$group_check."
                             "
    .$fsk_lock."
                             "
    .$where."
                             "
    .$sorting;

    Das Dropdown im Backend braucht nicht geändert zu werden.
    Wenn man nach "Preis" sortiert werden Sonderangebote automatisch bei der Sortierung berücksichtigt.

    Gruß,
    noRiddle

    demoncleaner

    • Fördermitglied
    • Beiträge: 505
    Re: Sortierung nach Preis - Sonderangebote berücksichtigen
    Antwort #4 am: 09. August 2014, 17:06:29
    Hammer. Funktioniert. 1000 Dank! =)

    web28

    • modified Team
    • Beiträge: 9.404
    Re: Sortierung nach Preis - Sonderangebote berücksichtigen
    Antwort #5 am: 11. August 2014, 13:20:30
    Gute Lösung.
    Das funktioniert allerdings nicht wenn es Artikel mit unterschiedlichen Steuersätzen gibt.

    Gruss Web28

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    Re: Sortierung nach Preis - Sonderangebote berücksichtigen
    Antwort #6 am: 11. August 2014, 17:19:49
    Warum dies ?

    Im übrigen sollte man vielleicht das auskommentierte p.products_price in der $listing_sql drinlassen.

    Gruß,
    noRiddle

    web0null

    • Experte
    • Beiträge: 1.998
    Re: Sortierung nach Preis - Sonderangebote berücksichtigen
    Antwort #7 am: 12. August 2014, 03:07:27
    Zitat
    Das funktioniert allerdings nicht wenn es Artikel mit unterschiedlichen Steuersätzen gibt.
    Da schon immer nach Netto-Preis sortiert wurde, hat das noch nie funktioniert.
    Dazu müsste man den Endpreis berechnen, und nach dem sortieren.
    Gruß

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.745
    • Geschlecht:
    Re: Sortierung nach Preis - Sonderangebote berücksichtigen
    Antwort #8 am: 12. August 2014, 17:52:18
    Achso, deshalb meint web28, wegen des Nettopreises.
    Das mitzubeachten würde etwas komplexer...

    Gruß,
    noRiddle

    demoncleaner

    • Fördermitglied
    • Beiträge: 505
    Re: Sortierung nach Preis - Sonderangebote berücksichtigen
    Antwort #9 am: 30. Dezember 2014, 00:02:24
    Kleine Ergänzung, da ich das bei mir hier grade machen musste. Wenn man will, dass das ganze auch in der categorie_listing - also in übergeordneten Kategorien funktioniert, dann muss man die o.g. Änderungen einfach genau so im Abschnitt weiter oben ca. ab Zeile 187 noch mal duchführen.

    Das

    Code: PHP  [Auswählen]
    LEFT JOIN ".TABLE_SPECIALS." ps ON ps.products_id = p.products_id
     

    kommt dann einfach direkt unter

    Code: PHP  [Auswählen]
    FROM ".TABLE_PRODUCTS_DESCRIPTION." pd, ".TABLE_PRODUCTS_TO_CATEGORIES." p2c, ".TABLE_PRODUCTS." p left join ".TABLE_MANUFACTURERS." m on p.manufacturers_id = m.manufacturers_id JOIN pricing pr ON p.products_id = pr.products_id

     
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware
               
    anything