Wenn der Benutzer auf der Produktdetailseite Farbe und Größe auswählt, wird eine einfache Produkt-ID zurückgegeben
Wenn der Benutzer auf der Produktdetailseite Farbe und Größe auswählt, wird eine einfache Produkt-ID zurückgegeben
Antworten:
Ich habe ein Auswahlfeld am Attribut des konfigurierbaren Produkts. Dies ist, was ich getan habe, um eine einfache Produkt-ID zu erhalten. Fügen Sie den folgenden Code in Ihre konfigurierbare Produkt-HTML-Datei ein.
require(["jquery"], function(jQuery) {
jQuery(".product-options-wrapper select[id^='attribute']").last().on('change', function() {
setTimeout(function (){
simpleId=jQuery("input[name=selected_configurable_option]").val();
alert(simpleId);
}, 500);
});
}); // Required
Wenn Sie ein konfigurierbares Farbfeld haben, ist eine geringfügige Änderung des obigen Codes erforderlich. Hoffentlich hilft es jemandem.
Vielen Dank
Versuchen Sie es mit dem folgenden Code.
foreach($collection as $_product) {
$_children = $_product->getTypeInstance()->getUsedProductIds($_product);
$getChildId = array();
foreach ($_children as $child){
$getChildId[] = $child->getID();
}
print_r($getChildId);
}
Wenn Sie die ID des ausgewählten einfachen Produkts in einem konfigurierbaren Produkt auf der Clientseite erhalten möchten, können Sie dies wie folgt tun.
Hier ist eine einfache Funktion, wie Sie dies ohne Codeänderung, neue Vorlagen oder sogar Module erreichen können. Nur eine Javascript-Datei und ein Layout-Update.
Product.Config.prototype.getIdOfSelectedProduct = function()
{
var existingProducts = new Object();
for(var i=this.settings.length-1;i>=0;i--)
{
var selected = this.settings[i].options[this.settings[i].selectedIndex];
if(selected.config)
{
for(var iproducts=0;iproducts<selected.config.products.length;iproducts++)
{
var usedAsKey = selected.config.products[iproducts]+"";
if(existingProducts[usedAsKey]==undefined)
{
existingProducts[usedAsKey]=1;
}
else
{
existingProducts[usedAsKey]=existingProducts[usedAsKey]+1;
}
}
}
}
for (var keyValue in existingProducts)
{
for ( var keyValueInner in existingProducts)
{
if(Number(existingProducts[keyValueInner])<Number(existingProducts[keyValue]))
{
delete existingProducts[keyValueInner];
}
}
}
var sizeOfExistingProducts=0;
var currentSimpleProductId = "";
for ( var keyValue in existingProducts)
{
currentSimpleProductId = keyValue;
sizeOfExistingProducts=sizeOfExistingProducts+1
}
if(sizeOfExistingProducts==1)
{
alert("Selected product is: "+currentSimpleProductId)
}
}