如何获取使用特定属性的所有可配置产品?

时间:2014-02-28 08:43:31

标签: magento

我希望所有使用size_variation属性和size_variation属性类型的可配置产品都会下拉。

请帮帮我。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

可以试试以下代码......

     $attribute_code = "size";
            $attribute_details = Mage::getSingleton("eav/config")->getAttribute('catalog_product', $attribute_code);
            $attributeId = $attribute_details->getId(); // ret
    //92 is attribute 
            $collection=Mage::getModel('catalog/product')->getCollection()->addAttributeToSelect('*')->addFieldToFilter('type_id', 'configurable'); 
$collection->getSelect()->join( array('config'=> 'catalog_product_super_attribute'), 'config.product_id = e.entity_id and config.attribute_id=92', array('product_id'));        
$collection->load();
echo count($collection);
foreach($collection as $pro){
    echo "<pre>";
    print_r($pro->getName());
    echo "</pre>";
}

答案 1 :(得分:-2)

试试这个......当然这会起作用

 $category_id = 4;

$catagory_model = Mage::getModel('catalog/category')->load($category_id); //where $category_id is the id of the category
$collection = Mage::getResourceModel('catalog/product_collection');
$collection->addAttributeToFilter('status', 1)->addAttributeToFilter('visibility', array(2, 4)); //only enabled product
$collection->addAttributeToSelect(array('name', 'url', 'small_image')); //add product attribute to be fetched
$collection->addAttributeToFilter('type_id', 'configurable');
$collection->addStoreFilter();
//$collection->load(true, true); // first parameter show sql query in output, second show sql query in var/log/syslog


if (!empty($collection)) {
    foreach ($collection as $_product):
        echo $_product->getName();
        //echo get_class($this);
        ?>
            <ul><li class="cell-enable a-center"><input type="checkbox" <input type="checkbox" value="new_slider" name="drives[]"><a><img width="40" height="40" onmouseout="productPreviewHide();" onmouseover="productPreview('<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(165, 165); ?>');" alt="<?php echo $this->htmlEscape($_product->getName()) ?>" src="<?php echo $this->helper('catalog/image')->init($_product, 'small_image')->resize(50, 50); ?>"></a></li>

            </ul>
        <?php
    endforeach;
}

编辑:

不要通过将代码粘贴到您的文件来复制投票。您需要将您的属性ID添加到上面的选择过滤器。我们失去了帮助你的兴趣..

Size_variation不适用于单个attriute集。我们可以根据属性集过滤产品。要仅获取“shoe_size”属性集,请添加该特定属性集的ID。请参阅以下代码。

$collection->addAttributeToFilter('attribute_set_id', 40);

$collection->addAttributeToSelect(array('name', 'url', 'small_image'));旁边添加上述链接现在您只能看到包含attribute_set_id为40的产品.40是的属性集ID。首先检查您需要的属性集是什么,并收集它的ID并将它们放在一个select查询数组中。如果您只需要单个属性集,则不需要数组...