Siehe: $ product-> getTypeInstance () -> getProductByAttributes ($ attributeInfo, $ product); von Mage_Catalog_Model_Product_Type_Configurable
.
Bearbeiten:
Dies ist eine Frage wie die eingängigen aus Vorstellungsgesprächen. Benötigen Sie dies auf der konfigurierbaren Produktseite im Frontend?
Darin app/code/base/default/template/catalog/product/type/options/configurable.phtml
ist:
var spConfig = new Product.Config(<?php echo $this->getJsonConfig() ?>);
Sie müssen dieses Objekt erweitern. Fügen Sie entweder Ihre Funktion zur Klasse hinzu oder erweitern Sie eine vorhandene Funktion, die Sie benötigen. http://prototypejs.org/learn/class-inheritance
In der JSON-Konfiguration, die standardmäßig an spConfig übergeben wird, gibt es den options
Schlüssel und einen tieferen products
Schlüssel. Sie können diese Konfiguration in Ihrer JS-Funktion verwenden. Fügen Sie auf jeder konfigurierbaren Produktseite das JSON-Objekt ein und formatieren Sie es zum besseren Verständnis mit einem Tool. Der JSON ist eingebaut Mage_Catalog_Block_Product_View_Type_Configurable::getJsonConfig()
.
In der JS-Klasse gibt es:
this.settings.each(function(element){
Event.observe(element, 'change', this.configure.bind(this))
}.bind(this));
In der configureElement
Funktion gibt es den Aufruf:
this.reloadPrice();
In der Funktion wird reloadPrice
eine Iteration der Dropdowns durchgeführt. Ihr Code sollte diese Iteration nachahmen, um zu überprüfen, ob alle verfügbaren Dropdowns ausgewählt wurden. Bei Erfolg kommt Ihr benutzerdefinierter Code herein.
Ist es ein Ajax-Aufruf, um dynamischen Inhalt abzurufen? Ich würde es nicht empfehlen. Versuchen Sie stattdessen, den dynamischen Inhalt / die dynamischen Daten der zugehörigen Produkte auf der gerenderten Seite in einem JSON-Objekt verfügbar zu machen, das von Ihrer benutzerdefinierten JS-Klasse verarbeitet wird.