Magento - 如何按属性的管理选项值过滤产品集合?

时间:2013-07-24 21:15:05

标签: php mysql magento magento-1.7

我目前正在开发产品配置器。我正在提交一个表单,通过POST将我的自定义属性的admin选项值发送到控制器操作。如果我使用当前商店的属性选项标签,一切正常,产品集合将被正确过滤,并返回与可配置产品相​​关联的简单产品。 遗憾的是,我使用管理员值来生成表单和URL,因为默认的瑞典商店值包含太多特殊字符。

所以我的问题是:如何在使用admin选项值或更具体的情况下从我的收藏中获取正确的产品,如何获得管理选项值的ID,例如将其用于默认商店&#39 ; s值:

$id = Mage::getResourceModel('catalog/product')
                                    ->getAttribute($key)
                                    ->getSource()
                                    ->getOptionId($value); 

我已经尝试过使用addStoreFilter(0)进行过滤,但这也没有用。我已经读过,它可能与默认商店中使用的平面表有关,但不适用于管理员,但我对Magento没有经验,所以我不能真正理解使用平面表的区别以及真正意味着什么

以下是关于过滤参考的最后一个问题: Magento - addFieldToFilter doesn't choose the right product

这是我的getProduct()函数:

public function getProduct($attributes)
    {

        Mage::Log($attributes);

        $productModel = Mage::getModel('catalog/product');

        //Get Product Collection
        $collection = $productModel->getCollection()


        //Filter for Selected Product
        $collection->addAttributeToSelect('status');
        $collection->addAttributeToSelect('doorconfig_enable');
        $collection->addAttributeToFilter('doorconfig_enable',array('eq' => 1));

        foreach ($attributes as $key => $value) 
        {
            $collection->addAttributeToSelect($key);

            $id = Mage::getResourceModel('catalog/product')
                                    ->getAttribute($key)
                                    ->getSource()
                                    ->getOptionId($value);

            $collection->addAttributeToFilter($key,
                array(
                        'eq' => $id
                     )
            );

        }

        $selection = $collection->getSelect()->__toString();

        Mage::Log($selection);

        Mage::log($collection->getSize(),null,'custom.log');

        $product = $collection->getFirstItem();

        return $product;

    }

0 个答案:

没有答案