Это не работает, потому что вы используете версию OR (вложенные массивы) addFieldToFilter()
.
То, что вы хотите, это версия AND. Попробуйте это:
$collection = Mage::getModel('catalog/product')->getCollection();
->addAttributeToSelect('*')
->addFieldToFilter('by_item', array('eq' => 'Suite'));
foreach ($collection as $product) {
var_dump($product->debug());
}
EDIT
Упущено из виду, что ОП говорил об атрибуте «Dropdown» (не текстовое поле).
При использовании addFieldToFilter()
для фильтрации по атрибуту «Раскрывающийся список» необходимо использовать значение / идентификатор параметра, но не текст / метку параметра.
Например, если у вашего пользовательского выпадающего атрибута есть эти опции
id text
12 Suite
13 Bridal
14 Jeans
и вы хотите отфильтровать по "Suite", вы кодируете это так:
$collection = Mage::getModel('catalog/product')->getCollection();
->addAttributeToSelect('*')
->addFieldToFilter('by_item', array('eq' => '12'));
Вы также можете косвенно использовать текст / метку вашего параметра:
$collection = Mage::getModel('catalog/product')->getCollection();
->addAttributeToSelect('*')
->addFieldToFilter(
'by_item',
array(
'eq' => Mage::getResourceModel('catalog/product')
->getAttribute('by_item')
->getSource()
->getOptionId('Suite')
)
);