Na página de detalhes do produto, quando o usuário escolhe a cor e o tamanho, ele retorna um ID simples do produto
Na página de detalhes do produto, quando o usuário escolhe a cor e o tamanho, ele retorna um ID simples do produto
Respostas:
Eu tenho a caixa de seleção no atributo do produto configurável. Isto é o que eu fiz para obter uma identificação simples do produto. Coloque o código a seguir no seu arquivo phtml configurável do produto.
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
Se você tiver uma amostra configurável, será necessária uma pequena alteração no código acima. Espero que ajude alguém.
Obrigado
Experimente o código abaixo.
foreach($collection as $_product) {
$_children = $_product->getTypeInstance()->getUsedProductIds($_product);
$getChildId = array();
foreach ($_children as $child){
$getChildId[] = $child->getID();
}
print_r($getChildId);
}
Se você precisar obter a identificação do produto simples selecionado em um produto configurável no lado do cliente, faça isso abaixo.
Aqui está uma função simples de como conseguir isso sem modificação de código, novos modelos ou mesmo módulos. Apenas um arquivo Javascript e atualização de layout.
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)
}
}