我有一个'精选'属性,其中有一个是/否选择列表作为管理员输入。我假设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等,但没有快乐。
答案 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']
的值,并了解您的比较失败的原因。