如何在 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 文件中实现了这段代码。
谢谢:)
我可以通过这段代码得到它:-
$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 文件中实现了这段代码。
谢谢:)