Magento:按子产品属性过滤可配置产品

本文介绍如何通过子产品的属性值筛选与可配置产品关联的子产品。

假设我们有一个具有两个属性(“ size ”和“ color ”)的可配置产品,并且我们只想选择具有特定大小和/或特定颜色的那些子产品。假设我们只选择颜色为“ 红色 ”的那些产品。

我们可以使用以下代码进行操作:

如果我们已经具有颜色“ Red ” 的值,则可以跳到下一步/代码。否则,如果我们只有颜色的名称,那么我们首先需要找出该颜色的值ID。

$attributeCode = 'color';
$attributeValue = 'Red';
 
$attribute = Mage::getSingleton('eav/config')->getAttribute('catalog_product', $attributeCode);
if ($attribute->usesSource()) {
    $options = $attribute->getSource()->getAllOptions(false);
}
 
$attributeValueId = 0;
foreach ($options as $option) {
    if ($option['label'] == $attributeValue) {
        $attributeValueId = $option['value'];
    }
}

接下来,我们加载可配置产品,然后获取与该可配置产品关联的所有子产品。在获取子产品时,我们向集合中添加一个过滤器,在其中指定要过滤的颜色的属性代码(颜色)和值ID。

$productId = YOUR_CONFIGURABLE_PRODUCT_ID; // ID of configurable product
 
$product = Mage::getModel('catalog/product')->load($productId);
 
$childProducts = Mage::getModel('catalog/product_type_configurable')                        
                        ->getUsedProductCollection($product)
                        ->addAttributeToSelect('*')
                        ->addAttributeToFilter($attributeCode, $attributeValueId);

我们可以打印并检查结果:

foreach ($childProducts as $cp) {
    echo $cp->getSku() . ' ' . $cp->getColor() . ' ' . $cp->getSize(); echo '<br>';
}

希望这可以帮助。谢谢。

相关文章

0 0 投票数
文章评分
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论