Ankündigung

Einklappen
Keine Ankündigung bisher.

Sofortige Preisänderung bei attributabhängigen Preisen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Sofortige Preisänderung bei attributabhängigen Preisen

    Hallo,

    Hab einiges an Recherchen zu diesem Thema hier im Forum durch und bin nun vollends verwirrt. Webschnecke hat mal die Erweiterung "PriceUpdate" empfohlen - die kann ich allerdings auf zen-cart.com nicht mehr finden. Hat sie sich nicht bewährt oder gibt es eine bessere Erweiterung für diesen Zweck?

    Für alle Artikel des Shops gibt es jeweils 10 Größen, die alle einen unterschiedlichen Preis haben. Nun habe ich, wie ich als Anfänger es überblicke, 2 Möglichkeiten dies zu realisieren:
    1. über Kategorien - wäre aber sehr umständlich und auch für den Nutzer zu kompliziert.
    2. über Attribute mit attributabhängigen Preisen - hier möchte mein Kunde allerdings eine Lösung, bei der auf der Produktdetail-Seite sich der Preis sofort nach Auswahl der Größe aus dem Drop-Down-Menü entsprechend ändert. Und nicht erst im Warenkorb. Die in Zencart implementierte Lösung mit der Preisadditdion in den Artikelattributen lehnt mein Kunde strikt ab - dies würde er in keinem deutschen Shop so finden, so sein Urteil.

    Was ist also aktuell die Methode der Wahl für dieses Problem? Wie verarbeitet ihr Eure attributabhängigen Preise?

    Gruß, Curio

    #2
    Wahrscheinlich war der Dynamic Price Updater gemeint.
    Der funkt sehr gut und macht das was Du willst. Der Preis ändert sich sofort bei Auswahl des jeweiligen Attributs und zusätzlich erscheint eine Sidebox mit der Preisberechnung. Die Endpreise werden auch 1:1 in die Bestellbestätigung übernommen.
    Infos und Download hier:
    Hi I don't know if this module will be of any use to anyone but I've been asked to include it a couple of times so thought I'd release it into the wild to see if anyone can make use of it... Here's what it does: When you have a product with attributes that alter the price this module will update the price displayed on the page instantly... This gives customers an at-a-glance price total as opposed to having to work it out themselves The updater should (in theory) work with any amount

    Falls Du Image Handler und Lightbox einsetzt kann es sein, dass Du in einem Javascript was ändern musst, damit sich das verträgt, ist aber in diesem Thread alles beschrieben.

    Kommentar


      #3
      Ja genau, webchills. Ich meinte den Dynamic Price Updater. Das Teil ist jedoch über den Link nicht mehr downloadbar. Ich habe auch keine anderen Download-Mirror gefunden.

      Ist das Modul etwa problematisch gewesen und wurde nun ausgemustert?
      Gibt es eine alternative diesbezügliche Zencart-Erweiterung?

      Oder, webchills, könntest Du mir per pn das zip-file rüberschicken?
      Würde mich sehr freuen.

      Gruß, Curio

      Kommentar


        #4
        Hast eine PM, ich hoff Du kannst sie lesen, bei mir funkt das nämlich nicht :(

        Kommentar


          #5
          Hallo webchills,

          Deine PN war leer. Habe Dir eine PN mit einer E-Mail-Adresse geschickt. Bitte versuch's noch mal darüber.

          Vielen Dank für Deine Mühe.

          Gruß, Curio

          Kommentar


            #6
            Die PN zicken nach wie vor rum. Sind immer noch leer. Hier einfach ein Übergangslink:
            kostenloses Open Source Onlineshop System - übersetzt, angepasst und erweitert zur Verwendung im deutschsprachigen Raum

            Habe Chrome im Originalthread kontaktiert, er richtet den Link auf zen-cart.com demnächst.

            Kommentar


              #7
              Hatte Chrome auch schon kontaktiert. Hat mir geschrieben, dass er jetzt seine Dateien ab Montag auf einem anderen Server hat und die Files gerade bearbeitet. Ich nehme also an, dass er eine aktuelle Version vorstellen wird, wohl jedoch dann für Zencart 1.3.8.

              Vielen Dank noch mal für den Downloadlink. Ist alles gut angekommen.

              Gruß, Siggi

              Kommentar


                #8
                Also ich habe jetzt das Modul "Dynamic Price Updater" installiert (ist ja nur die jscript_update.php).
                Leider funktioniert das Teil bei mir nicht, wenn ich in "Localisation"->"Währungen" im Admin-Menü die Trennzeichen für Dezimal- und Tausenderstellen entsprechend deutschen Gepflogenheiten setze. Es ist halt nur auf amerikanische Trennzeichen für Zahlen ausgelegt. :(

                webchills, wie hast Du das gelöst? Da muss ich ja die ganzen regulären Ausdrücke (insbes. var seeker) umkrempeln. Auf deren Suchmuster basiert ja dann die ganze Berechnung des Gesamtpreises.

                Wie habt Ihr das umgesetzt?
                Bin gerade wieder mal am totalen Verzweifeln mit Zencart und wirklich nahe dran das ganze Projekt abzubrechen (nachdem ich ca 1Monat lang jeden Tag dran gesessen habe, um ein eigenes Design auf allen Seiten durchzuziehen). :cry:
                Die ganze Preisberechnung mit den attributabhängigen Preisen ist echt zum Ko.... Wenn ich für ein Attribut (zB. Größe XXL) einen Preisaufschlag von 5,00 EUR festsetze, wird dieser jedoch im Frontend plötzlich als Nettopreis betrachtet. Es stehen also plötzlich 5,35 EUR im Größen-Dropdown-Menü als Attributaufschlag. Was soll das? Usw. Usw.
                Und jedes dieser "kleinen" Probleme kostet wieder einen Tag. Nerven! Nerven!

                Gruß, gefrusteter Curio

                Kommentar


                  #9
                  Zitat von Curio
                  Leider funktioniert das Teil bei mir nicht, wenn ich in "Localisation"->"Währungen" im Admin-Menü die Trennzeichen für Dezimal- und Tausenderstellen entsprechend deutschen Gepflogenheiten setze. Es ist halt nur auf amerikanische Trennzeichen für Zahlen ausgelegt. :(
                  Ist mir bisher nicht aufgefallen, weil ich das Trennzeichen auf . habe.
                  Hab das daher gar nicht groß anpassen müssen.
                  Habs grad ausprobiert mit ',' da ist das Rechenergebnis wirklich nicht schön :-(

                  Frag am besten mal bei Chrome nach einer Lösung. Eine andere Möglichkeit, die Attributpreisberechnung kundenfreundlicher zu gestalten, kenn ich leider nicht.

                  Kommentar


                    #10
                    Hi webchills,

                    ich hatte jetzt auch mal ein paar Tage meine Preise einfach mit dem Dezimalpunkt statt Komma laufen. Da funktioniert der dynamic price updater tadellos.
                    Allerdings frage ich mich, ob das nicht rechtliche Konsequenzen haben könnte, wenn durch falsche Zeichensetzung in den Preiszahlen der Preis nach deutschem Recht verfälscht ist.

                    Deshalb hab' ich noch mal mit Chrome (dem Autor von dynamic price updater) Kontakt aufgenommen. Er hat den regulären Suchausdruck var seeker angepasst und ich habe ein paar andere Änderungen in das Modul eingefügt, um es auch für europäische Zahlen-Interpunktion fit zu machen.
                    Jetzt läuft alles prima und es ist für en Multilanguage-Einsatz bereit.

                    Folgende Änderungen wuden durchgeführt:

                    1. Einführung einer neuen Variablen (var currencyStr), in der die aktuell ausgewählte Währung gespeichert wird. Denn die Währung bestimmt, ob als Dezimaltrennzeichen ein Komma oder ein Punkt erscheinen muss. Bei allen in zencart standardmäßig eingestellten Währungen, außer dem Euro, wird hier ein Dezimalpunkt gesetzt.
                    Zeile 17:
                    Code:
                    var currencyStr = '';   // new global variable for checking the 
                    current currency
                    2. Änderung des regulären Suchausdruckes
                    Zeile 20:
                    var seeker = new
                    RegExp(/\(\s*([+-]?)([^0-9.,]*)([0-9]+[.,]?[0-9]*)\s*([^0-9)]*)\s*\)/);
                    3. Befüllen der Variablen currencyStr mit der aktuellen Währung aus dem Währungs-Dropdownmenü. Ich habe dazu dem Select-Tag der Währungsauswahl vorher extra eine id zugewiesen, um dann mit javascript besser darauf zugreifen zu können. Das Befüllen der Variablen currencyStr erfolgt in der Funktion init(), da ja vorher erst die Seite geladen werden muss, ehe Werte daraus ausgelesen werden können.
                    Zeile 72:
                    Code:
                    currencyStr = document.getElementById('currencyPd').value;
                    4. Entfernen aller Kommas oder Punkte aus den Preisen
                    Zeile 84:
                    origPrice =
                    Code:
                    Number(objPrice.innerHTML.match(/([0-9,.]+)/g)[0].replace(/,/g, 
                    '').replace(/\./g, ''));
                    Zeile 109:
                    Code:
                    prArr[objSel[i].id]['p'] = Number(matches[3].replace(/,/, 
                    '').replace(/\./, ''));
                    Zeile 193:
                    Code:
                    priceAdj = Number(matches[3].replace(/,/g, '').replace(/\./g, 
                    '')); // Number(matches[0].match(/[0-9.]+/)[0]);
                    Zeile 238:
                    Code:
                    priceAdj = Number(matches[3].replace(/,/g, '').replace(/\./g, 
                    ''));
                    5. Veränderte Berechnung des neuen Preises mittels Division durch 100
                    Zeile 291:
                    Code:
                    var newPrice = ((origPrice + totalAdj) * quantity / 
                    100).toFixed(2);
                    6. Anpassung der Funktion addCommas(nStr)
                    Zeile 361:
                    Code:
                    function addCommas(nStr)
                    { // this function can be found at [url]http://www.mredkj.com/javascript/numberFormat.html#addcommas[/url]
                    	nStr += '';
                    	if(currencyStr == 'EUR') {
                    		var x = nStr.split('.');
                    		var x1 = x[0];
                    		var x2 = x.length > 1 ? ',' + x[1] : '';
                    		var rgx = /(\d+)(\d{3})/;
                    		while (rgx.test(x1)) {
                    			x1 = x1.replace(rgx, '$1' + '.' + '$2');
                    		}
                    		return x1 + x2;
                    	}
                    	else {
                    		var x = nStr.split('.');
                    		var x1 = x[0];
                    		var x2 = x.length > 1 ? '.' + x[1] : '';
                    		var rgx = /(\d+)(\d{3})/;
                    		while (rgx.test(x1)) {
                    			x1 = x1.replace(rgx, '$1' + ',' + '$2');
                    		}
                    		return x1 + x2;
                    	}
                    }
                    Die Zeilennummern können geringfügig von Euren abweichen.
                    Chrome hat dazu geschrieben, dass diese Änderungen eh schon geplant waren, dies jedoch aus Zeitgründen noch nicht umgesetzt wurde. Er hofft dies in den nächsten Woch in den dynamic price updater mit aufnehmen zu können.

                    Gruß Curio

                    Kommentar


                      #11
                      Hi Curio,
                      Vielen Dank für diese Anpassung. Werd das bei mir auch einbauen und das Trennzeichen auf , umstellen.
                      Grüße
                      webchills

                      Kommentar


                        #12
                        Falls Interesse daran besteht, das geänderte Modul hier im Downloadbereich anzubieten, dann gebe ich gerne meine eMail Adresse raus und lade das hier hoch.

                        Denn momentan nimmt der Downloadbereich nur von Admins Uploads an, trotz all meiner ausprobierten Einstellungen.

                        Gruß
                        MaleBorg

                        Kommentar


                          #13
                          Das geänderte Modul ist jetzt im Downloadbereich verfügbar.

                          Kommentar


                            #14
                            Danke!

                            Gruß
                            MaleBorg

                            Kommentar


                              #15
                              Hallo zusammen,
                              der Befehl "currencyStr = document.getElementById('currencyPd').value;"
                              ging bei mir ins Leere, so dass die Variable currencyStr bei der if-Abfrage in der Funktion addCommas nicht belegt war.
                              Dies führte dazu, dass keine Umstellung von Dezimalpunkt auf Komma erfolgt.

                              Habe ich etwas übersehen? Ich nutze keine Währungsbox. Mit einem festen Belegen der Variable mit 'EUR' funktioniert es jetzt.
                              v1.3.8

                              Gruß
                              Forbi099

                              Kommentar

                              Info zu diesem Forenarchiv:
                              Mit Release von 1.5.7 wurde die deutsche Zen Cart Version auf eine reine DIY-Lösung umgestellt.
                              Für einen Support via Forum stehen keine personellen und zeitlichen Ressourcen mehr zur Verfügung.
                              Dieses Supportforum bleibt im Nur-Lesen-Modus als Wissensarchiv noch online verfügbar.
                              PM Funktionalität, Registrierung und Posten neuer Beiträge sind deaktiviert.
                              Zugriff auf Anhänge in den Postings ist auch ohne Registrierung/Einloggen möglich.
                              FAQ und Downloadbereich des Forums wurden in die neue umfangreiche Knowledgebase auf der zen-cart-pro.at Website übernommen.

                              Das Development der deutschen Zen Cart Version geht wie bisher auf Github weiter.
                              Wir werden auch weiterhin neue Versionen bereitstellen und die Onlinedokumentation/Knowledgebase aktualisieren.
                              Fehler in der Software können auf Github als Issues gemeldet werden.
                              Follow us
                              aktuelle version
                              Zen Cart 1.5.7g deutsch
                              vom 12.12.2023
                              [Download]
                              Lädt...
                              X