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: product_listing_v1.html Versandkostenfrei bis 50.- Euro

    Hamburger

    • Fördermitglied
    • Beiträge: 63
    Guten Morgen!

    Shop-
    modified eCommerce Shopssoftware v1.06 rev 4642 dated: 2013-04-20
    Datenbank Version: "MOD_1.0.6.0"

    Kann mir jemand einen Tipp geben, wo der Fehler liegt bei der if Abfrage.
    {if $module_data.PRODUCTS_PRICE < 50}{ $module_data.PRODUCTS_SHIPPING_LINK }{else}Versandkostenfrei {/if}
    Es wird richtig angezeigt. Ware unter 50.- Euro mit zzgl. Versandkosten
    Über 50.00 Euro Versandkostenfrei,
    falsch angezeigt werden jedoch Beträge über 1000.00 Euro mit zzgl. Versandkosten statt Versandkostenfrei
    Ich habe hier im Forum leider nichts gefunden und bitte daher um Hilfe.
    Gruß aus Hamburg

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

    fishnet

    • Fördermitglied
    • Beiträge: 4.821
    • Geschlecht:
    Re: product_listing_v1.html Versandkostenfrei bis 50.- Euro
    Antwort #1 am: 27. Oktober 2013, 11:16:39
    Wenn es bis 1000 Euro funktioniert, dann wird dein Code an sich schon korrekt sein. Ab 1000 Euro greift dann irgendwas anderes. Oder, wenn du bei 1000 Euro bist, bist du vielleicht bei einem bestimmten Gewicht.
    Denkansatz - schau mal bei deinen Versandmodulen und im Bereich maximales Gewicht pro Paket...

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 14.008
    • Geschlecht:
    Re: product_listing_v1.html Versandkostenfrei bis 50.- Euro
    Antwort #2 am: 27. Oktober 2013, 16:13:54
    Das geht so überhaupt nicht.
    $module_data.PRODUCTS_PRICE ist der bereits formatierte Preis,
    inkl. Währungsangabe und bei Sonderangeboten noch mit Text.
    Einen solchen "mixed" string kann man nicht einfach mittels größer oder kleiner mit einem Interger vergleichen.

    Entweder du mußt mit dem Smarty-Modifier |regex_replace die Ausgabe vor dem Vergleich erstmal komplett strippen von allen Zeichen die nicht Zahlen sind
    (was bedeutet, daß man aufwendige Regex im Template ablaufen lassen müsste was aus Performance-Gründen nicht gerade sinnvoll ist)
    oder du machst folgendes:

    Für die product_listing
    In /includes/classes/product.php suchst du in der Funktion buildDataArray() das
    Code: PHP  [Auswählen]
    'PRODUCTS_PRICE' => $products_price['formated'],

    und gibst direkt darunter das ein
    Code: PHP  [Auswählen]
    'PRODUCTS_PRICE_PLAIN' => $products_price['plain'],   //get also unformated price, noRiddle

    Für die product_info
    In /includes/modules/product_info.php das suchen
    Code: PHP  [Auswählen]
    $info_smarty->assign('PRODUCTS_PRICE', $products_price['formated']);

    und darunter das einfügen
    Code: PHP  [Auswählen]
    //BOC get also unformated price, noRiddle
    $info_smarty->assign('PRODUCTS_PRICE_PLAIN', $products_price['plain']);
    //EOC get also unformated price, noRiddle

    Im Template kannst du dann so den Preis vergleichen (am Beispiel product_listing_v1.html):
    Code: PHP  [Auswählen]
    {if $module_data.PRODUCTS_PRICE_PLAIN > 50}{$module_data.PRODUCTS_SHIPPING_LINK }{else}Versandkostenfrei {/if}

    Das Wort "Versandkostenfrei" solltest du allerdings sprachabhängig definieren:
    Code: PHP  [Auswählen]
    {if $module_data.PRODUCTS_PRICE_PLAIN > 50}{$module_data.PRODUCTS_SHIPPING_LINK }{else}{#text_free_shipping#}{/if}

    und in den /lang/SPRACHE/lang_SPRACHE.conf in der entsprechenden Section (steht immer in [])
    den Text definieren
    (z.B. bei für die Produkt-Info in dieser Section [product_info]
    Code: PHP  [Auswählen]
    text_free_shipping = 'versandkostenfrei '

    Die Rubrik siehst du an der obersten Zeile in der Template-Datei,
    Beispiel
    Code: PHP  [Auswählen]
    {config_load file="$language/lang_$language.conf" section="index"}

    Die Kommentare würde ich lassen, falls du mal ein Update machen willst.
    Meinen Avatar-Namen kannst du natürlich mit deinem Kürzel ersetzen.

    Sicherheitshalber lässt du dir im jeweiligen Template mal
    {$module_data.PRODUCTS_PRICE_PLAIN} bzw.
    {$PRODUCTS_PRICE_PLAIN}
    ausgeben um zu prüfen ob es auch funktioniert.

    Im übrigen bin ich der Meinung man sollte den "plain"-Preis generell in die nächste Version übernehmen.
    Dann hätte man den unformatierten Preis bei Bedarf immer in den Templates zur Verfügung.

    Gruß,
    noRiddle

    Hamburger

    • Fördermitglied
    • Beiträge: 63
    Re: product_listing_v1.html Versandkostenfrei bis 50.- Euro
    Antwort #3 am: 27. Oktober 2013, 23:09:35
    Problem gelöst,

    danke für die Hilfe.
    Gruß aus Hamburg
    19 Antworten
    12040 Aufrufe
    24. Oktober 2011, 12:06:51 von Carsten
    1 Antworten
    2345 Aufrufe
    05. Oktober 2010, 12:35:11 von DokuMan
    4 Antworten
    4997 Aufrufe
    01. August 2011, 08:30:53 von franky_n