Как мне получить идентификатор раскрывающегося атрибута по его текстовой метке?


У меня есть атрибут продукта, который настроен как выпадающий список с фиксированным списком доступных значений.

Теперь мне нужно написать скрипт, который будет фильтровать на основе выбранного значения выпадающего атрибута. Фильтр должен знать целочисленный идентификатор значения, но при вводе скрипта используется текстовая метка атрибута.

Как мне найти целочисленный идентификатор требуемого значения атрибута?

Author: STW, 2014-04-02

2 answers

Вы можете использовать что-то вроде этого.

 $attribute = Mage::getModel('eav/config')->getAttribute('catalog_product', "your attribute_code");
 $arg_value = "your  text based label";
    foreach ( $attribute->getSource()->getAllOptions(true, true) as $option )
    {

        if($arg_value == $option['label'])
        {

            unset($attribute);
            echo $option['value'] ; 
        }
    }

Это даст вам целочисленный идентификатор вашей текстовой метки

 3
Author: Mufaddal, 2014-04-03 06:29:51

Вот более краткий подход к переводу текстовой метки в ее значение:

// Returns the value ID of the 'example' label for 'some_attribute'
Mage::getModel('catalog/product')->getResource()
  ->getAttribute('some_attribute')
  ->getSource()->getOptionId('example');

Бонус: Преобразовать целочисленное значение в текстовую метку немного проще:

Mage::getModel('catalog/product')
  ->setSomeAttribute(5)
  ->getAttributeText('some_attribute');

Оба этих примера используют модель catalog/product без фактической загрузки продукта. Если вы работаете с загруженным продуктом, вы также можете использовать этот экземпляр.

 0
Author: STW, 2015-09-09 19:37:32