Produtos configuráveis fora de estoque em list.phtml
-
13-12-2019 - |
Pergunta
Preciso exibir um texto "esgotado" para todos os produtos em um arquivo list.phtml...
estou a usar <?php if($_product->isSaleable()) : ?>
e está funcionando muito bem para produtos simples, mas não está funcionando para produtos configuráveis.
Eu tentei algumas coisas e, por exemplo, este código
if($productType == "configurable") {
$arrayvalori = array("Small"=>"0","Regular"=>"0","Large"=>"0");
$attValConfig = $product->getTypeInstance()->getConfigurableAttributesAsArray();
if(sizeof($attValConfig)) {
$hasAtts++;
foreach($attValConfig as $attValConfigSingle) {
foreach($attValConfigSingle['values'] as $attValConfigSingleVal) {
if($arrayvalori[$attValConfigSingleVal["label"]] > 0) {
echo 'buy';
} else {
echo "sold out";
}
}
}
}
}
Funciona, mas retorna todos os status dos atributos disponíveis (para o produto configurável) Exemplo de saída:
buy
buy
buy
buy
sold out
sold out
buy
Quero exibir compre se 1 ou mais variações estiverem disponíveis e exibir esgotado se todas estiverem esgotadas?!?!!
obrigado
Solução
A resposta já está na sua pergunta.Como você disse, está mostrando compra e venda corretamente após o loop.Você só precisará modificar um pouco seu código.
$canBuy = false;
foreach ($attValConfig as $attValConfigSingle) {
foreach ($attValConfigSingle['values'] as $attValConfigSingleVal) {
if ($arrayvalori[$attValConfigSingleVal["label"]] > 0) {
$canBuy = true;
}
}
}
if($canBuy){
echo 'buy';
}
else {
echo 'sold out';
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a magento.stackexchange