Wie funktioniert die dynamische Preisgestaltung in Magento?
8
Ich frage mich, wie die dynamische Preisgestaltung in Magento funktioniert.
Zum Beispiel habe ich ein Produkt im Backend erstellt und einige benutzerdefinierte Optionen hinzugefügt. Wenn der Benutzer die Option auswählt, ändert sich der Preis automatisch auf der Produktansichtseite, ohne die Seite neu zu laden.
Kann jemand erklären, wie Magento diese Aktion ausführt?
Und können wir benutzerdefinierte dynamische Preise hinzufügen? Ich möchte, wenn der Benutzer auf den Link klickt (ich habe ihn zur Produktansichtseite hinzugefügt), dann ändert sich der Preis.
Die Preisberechnung ist in Magento ein sehr komplexes Thema. Hier ist eine Vogelperspektive, wie dies für ein einfaches Produkt gemacht wird:
Magento erhält den "Grundpreis". Dies ist der Preis, den Sie in der Preisspalte definiert haben
Der "Gruppen" -Preis wird angewendet. Dies ist der Teil, in dem der Staffelpreis basierend auf der bestellten Menge, der Website und der Kundengruppe berücksichtigt wird.
Der Sonderpreis wird angewendet, wenn für das aktuelle Datum ein Sonderpreis definiert ist.
Das Ereignis " catalog_product_get_final_price " wird ausgelöst. Hier sollte Ihr benutzerdefiniertes Modul ins Spiel kommen, das am Preis bastelt. Als funktionierendes Beispiel fängt das CatalogRule-Modul dieses Ereignis ab und ändert den Preis basierend auf den definierten Katalogregeln
Die Preise der ausgewählten Optionen werden berücksichtigt
Da dieser Vorgang äußerst zeitaufwändig ist, erstellt Magento einen Preisindex und führt die oben genannten Schritte nur bei einer Neuindizierung durch. Der Preisindex verwendet eine Reihe von Tabellen, die Informationen zum "endgültigen" Preis (berechnet anhand der obigen Schritte) sowie Mindest- / Höchstpreise für konfigurierbare und Bundles enthalten. Diese Tabelle enthält einen Eintrag für jede Kombination aus Website, Produkt und Kundengruppe, sodass das System nur die richtige Zeile basierend auf den Kundendaten auswählen muss, damit der gesamte Prozess in angemessener Zeit ausgeführt wird.
Was den Frontend-Teil betrifft, so erfolgt die dynamische Erhöhung und Verringerung des Preises in Javascript, das mit einem JSON-Array mit allen "Preisstufen" beginnt und den Preis basierend auf Ihrer Auswahl verringert / erhöht.
Vielen Dank an Paul für Ihre Antwort. Magento dynamische Preisgestaltung ist ein kompliziertes Thema :)
Wakanina
Verwenden Sie das Ereignis "catalog_product_get_final_price" und setFinalPrice()ändern Sie den Preis auf der Produktansichtseite und in weiteren Schritten. Aber wie kann ich den dynamischen Preis direkt auf der Produktlistenseite einstellen?
Shathish
1
Dies geschieht mit Javascript und Ajax. Wenn ich richtig bin, befindet es sich in der Datei js / varien / configure.js. Wenn Sie das Verhalten ändern möchten, können Sie die spezifische Funktion mithilfe von Prototyping erweitern. Ich bin nicht so gut mit Javascript, aber ich denke, dieser Stackoverflow-Artikel erklärt die Grundlagen der Erweiterung von /programming/2686258/javascript-inheritance-extend-function
setFinalPrice()
ändern Sie den Preis auf der Produktansichtseite und in weiteren Schritten. Aber wie kann ich den dynamischen Preis direkt auf der Produktlistenseite einstellen?Dies geschieht mit Javascript und Ajax. Wenn ich richtig bin, befindet es sich in der Datei js / varien / configure.js. Wenn Sie das Verhalten ändern möchten, können Sie die spezifische Funktion mithilfe von Prototyping erweitern. Ich bin nicht so gut mit Javascript, aber ich denke, dieser Stackoverflow-Artikel erklärt die Grundlagen der Erweiterung von /programming/2686258/javascript-inheritance-extend-function
quelle