如何在 magento 的可配置产品中获取哪些产品不可销售?

How can I get which products are not saleable in configurable products in magento?

我可以通过这段代码得到它:-

$allProducts = $_product->getTypeInstance(true)->getUsedProducts(null, $_product);
foreach($allProducts as $p)
   if($p->isSaleable())
endforeach;

但我想要的方式是....就像我有 1 个可配置的产品,其中我有 2 种颜色的白色,然后它是相关的尺寸,如 s、m 和 l,所以我总共有 3 种产品,从白色到 s ,m & l & 同样的方式 Blue & 它与 s,m & l 相关。所以最后我可以说我有 6 个产品。

现在是 White->s & l 和 Blue->s & m 这些产品缺货,问题是所有产品的名称都相同,即 T 恤,所以现在我怎么才能知道哪些组合产品缺货?

有代码吗?

谢谢

如果我没理解错你想知道哪个尺码和颜色缺货?因此,在 if ($p->isSaleable) 中,您应该可以这样检查颜色和尺寸:

echo $p->getAttributeText("color");
echo $p->getAttributeText("size");

如果不行试试:

$p->getResource()->getAttribute("color")->getFrontend()->getValue($p);

其他方式是在简短描述中包含尺码和颜色,或者使用某种 SKU 代码来区分它们。 IE。我的产品46。其中 4 可以映射到颜色,6 可以映射到尺寸)。

希望对您有所帮助!

感谢哈维尔的宝贵支持:)

我想要的输出方式,我在这里发布解决方案:-

/* FOR CONFIGURABLE PRODUCTS */
$_product = Mage::registry('current_product');
if($_product->isConfigurable())
{
    /* FIRST GET ALL ATTRIBUTES OF CONFIGURABLE PRODUCT */
    $attributes = $_product->getTypeInstance(true)->getConfigurableAttributes($_product);
    foreach($attributes as $att)
    {
        $pAtt = $att->getProductAttribute();
        $array_attribute_code[] = $pAtt->getAttributeCode();
    }

    /* NOW LOOP THE PRODUCTS & GET COMBINATIONS WHERE PRODUCTS ARE OUT OF STOCK */
    $allProducts = $_product->getTypeInstance(true)->getUsedProducts(null, $_product);
    foreach($allProducts as $allProduct)
    {
        if(!$allProduct->isSaleable())
        {
            for($i=0;$i<count($array_attribute_code);$i++)
            {
                echo $allProduct->getAttributeText($array_attribute_code[$i]).' ';
            }
            echo "<br/>";
        }
    }
}

尝试上面的代码并得到像 White s 然后在 White l 然后在 Blue s 下面的输出对

重要的是要告诉你,我已经在我的模块的 .phtml 文件中实现了这段代码。

谢谢:)