So erhalten Sie eine einfache Produkt-ID des konfigurierbaren Produkts auf der Seite mit den Produktdetails

7

Wenn der Benutzer auf der Produktdetailseite Farbe und Größe auswählt, wird eine einfache Produkt-ID zurückgegebenGeben Sie hier die Bildbeschreibung ein

Jitendra Mohanta
quelle
Sie können diesen Link magento1 verwenden. magento.stackexchange.com/questions/28881/…
Payal Patel
@payal Wenn Benutzer die Größe und Farbe auswählen, gibt es Produkt-ID davon zurück
Jitendra Mohanta
von welchem ​​willst du mit js oder php zur id kommen?
Rakesh Jesadiya
Ich möchte, dass die Warnmeldung die einfache Produkt-ID
anzeigt
Hast du es gelöst? Ich suche auch etwas ähnliches.
Seefan

Antworten:

5

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

Bhupendra Jadeja
quelle
1

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);
}
Janak Bhimani
quelle
Vielen Dank für die Wiedergabe, aber ich möchte etwas mehr. Wenn ich auf die Größe eines beliebigen Werts mit der entsprechenden Farbe klicke, wird nur diese einfache Produkt-ID zurückgegeben.
Jitendra Mohanta
1

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)
     }
}
Janak Bhimani
quelle
Sie sollten Ihre aktuelle Antwort aktualisieren.
Khoa TruongDinh