製品の詳細ページで構成可能な製品の単純な製品IDを取得する方法


7

製品詳細ページで、ユーザーが好きな色やサイズを選択すると、その単純な製品IDが返されますここに画像の説明を入力してください


このリンクmagento1を使用できます。magento.stackexchange.com/questions/28881/...
パヤルパテル

@payalユーザーがサイズと色を選択すると、その製品IDが返されます
Jitendra Mohanta '

そこから、jsまたはphpを使用してidに到達したいですか?
Rakesh Jesadiya 16

シンプルな製品IDを表示するアラートメッセージが必要
Jitendra Mohanta '

解決しましたか?私も似たようなものを探しています。
Seefan

回答:


5

構成可能な製品の属性に選択ボックスがあります。これは、単純な製品IDを取得するために行ったものです。次のコードを構成可能な製品のphtmlファイルに挿入します。

 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

設定可能なスウォッチがある場合は、上記のコードに若干の変更が必要になります。

ありがとうございました


1

以下のコードを試してください。

foreach($collection as $_product) {
    $_children = $_product->getTypeInstance()->getUsedProductIds($_product);
    $getChildId = array();
    foreach ($_children as $child){
        $getChildId[] = $child->getID();
    }
    print_r($getChildId);
}

リプレイに感謝しますが、もっと何かしたいのですが、それぞれの色で任意の値のサイズをクリックすると、その単純な製品IDのみが返されます。
Jitendra Mohanta 16

1

クライアント側の設定可能な製品で選択したシンプルな製品のIDを取得する必要がある場合は、以下の方法で行うことができます。

これは、コードを変更せずに、新しいテンプレートやモジュールでさえ、それを実現する簡単な関数です。1つのJavascriptファイルとレイアウトを更新するだけです。

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)
     }
}

現在の回答を更新してください。
Khoa TruongDinh 16
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.