Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何获得哪些产品在magento的可配置产品中不可销售?_Magento - Fatal编程技术网

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

我如何获得哪些产品在magento的可配置产品中不可销售?,magento,Magento,我可以通过以下代码获得:- $allProducts = $_product->getTypeInstance(true)->getUsedProducts(null, $_product); foreach($allProducts as $p) if($p->isSaleable()) endforeach; 但我想要的方式是…就像我有一个可配置的产品,其中我有两种颜色的白色,然后它的相关尺寸,如s,m&l,所以我总共有3个产品的组合,白色到s,m&l,同样的方式蓝

我可以通过以下代码获得:-

$allProducts = $_product->getTypeInstance(true)->getUsedProducts(null, $_product);
foreach($allProducts as $p)
   if($p->isSaleable())
endforeach;
但我想要的方式是…就像我有一个可配置的产品,其中我有两种颜色的白色,然后它的相关尺寸,如s,m&l,所以我总共有3个产品的组合,白色到s,m&l,同样的方式蓝色&它的相关s,m&l。最后我可以说我有6种产品

现在问题是白色->s&l和蓝色->s&m这些产品缺货,问题是所有产品的名称都是相同的,即T恤,那么现在我如何知道哪些组合产品缺货

有密码吗


谢谢

如果我理解正确,您想知道哪种尺寸和颜色缺货吗?因此,在
if($p->isSaleable)
中,您应该能够检查颜色和大小:

echo $p->getAttributeText("color");
echo $p->getAttributeText("size");
如果不起作用,请尝试:

$p->getResource()->getAttribute("color")->getFrontend()->getValue($p);
另一种方法是在简短的描述中包含尺寸和颜色,或者使用某种SKU代码来区分它们。例如,我的产品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/>";
        }
    }
}
/*用于可配置产品*/
$_product=Mage::注册表(“当前_产品”);
如果($\u product->isConfigurable())
{
/*首先获取可配置产品的所有属性*/
$attributes=$\u product->getTypeInstance(true)->getConfigurableAttributes($\u product);
foreach($att属性)
{
$pAtt=$att->getProductAttribute();
$array_attribute_code[]=$pAtt->getAttributeCode();
}
/*现在循环产品并获取缺货的产品组合*/
$allProducts=$\u product->getTypeInstance(true)->getUsedProducts(null,$\u product);
foreach($allProducts作为$allProduct)
{
如果(!$allProduct->isSaleable())
{
对于($i=0;$igetTributeText($array_attribute_code[$i])”;
}
回声“
”; } } }
尝试上面的代码并获得像白色s、白色l、蓝色s这样的成对输出

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


谢谢:)

哈维尔,首先谢谢你的帮助:)现在问题是我知道我们可以通过调用getAttributeText函数来获得它,但问题是我/你知道它是颜色和大小:)哈哈,这是真正的问题,所以我想让它们成对出现。现在,经过45个小时的思考,我已经找到了解决方案(点击和错过:)我将在半小时内发布整个解决方案。但非常感谢Javier给出了宝贵的答案:)我不确定我是否在跟踪,但我想
$p->getTypeInstance(true)->getConfigurableAttributeSarray
可能会有所帮助。无论如何,很高兴您找到了解决方案:)