如何使用YesNo类型属性过滤集合?

时间:2009-11-10 22:32:36

标签: magento

我有一个'精选'属性,其中有一个是/否选择列表作为管理员输入。我假设Yes和No的值是1和0,因为它们是针对每个其他Yes / No列表。但是,如果我尝试使用'featured'属性过滤集合,则它不起作用:

$feat_attribute = $_product->getResource()->getAttribute($featuredattribute)->getSource()->getOptionId(1);

但是,如果我使用下拉列表创建“特色”属性,并编写自己的“是”和“否”,则其工作原理如下:

$feat_attribute = $_product->getResource()->getAttribute($featuredattribute)->getSource()->getOptionId('Yes');

任何想法?我也尝试过值为true / false,yes / no,on / off等,但没有快乐。

3 个答案:

答案 0 :(得分:2)

这似乎是一个旧线程,但无论如何我只是遇到了同样的问题,我将该属性设置为在产品列表和产品视图中可见,然后将addAttributeToFilter(feature_product_attribute, 1)应用于是/否类型。

答案 1 :(得分:0)

也许你应该使用'1'和'0'而不是整数值?

像:

$feat_attribute = $_product->getResource()->getAttribute($featuredattribute)->getSource()->getOptionId('1');

答案 2 :(得分:0)

每当Magento的行为让我感到困惑时,我就开始攻击核心资源(当然是开发副本),看看它在做什么以及为什么做我认为应该做的事情。我没有做过很多关于管理UI的东西,所以我不是100%理解你的问题,而是看看getOption函数

File: /app/code/core/Mage/Eav/Model/Entity/Attribute/Source/Abstract.php

public function getOptionId($value)
{
    foreach ($this->getAllOptions() as $option) {
        if (strcasecmp($option['label'], $value)==0 || $option['value'] == $value) {
            return $option['value'];
        }
    }
    return null;
}

我会在其中添加一些Mage::Log和/或var_dump来自$option['label']$option['value']的值,并了解您的比较失败的原因。