本文介绍如何通过子产品的属性值筛选与可配置产品关联的子产品。
假设我们有一个具有两个属性(“ 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>';
}
希望这可以帮助。谢谢。