Как получить идентификатор пользовательского атрибута при наличии текстового значения пользовательского атрибута?


Я хочу обновить пользовательский атрибут, и я могу сделать это следующим образом:

$product = Mage::getModel('catalog/product')
    ->loadByAttribute('sku',"mysku");

$product->addAttributeUpdate('manufacturer', 281);
echo $product->getAttributeText('manufacturer');

В addAttributeUpdate() вместо передачи 281, который является идентификатором У меня есть только текст атрибута, поэтому я должен получить идентификатор этого текста атрибута и вставить его вместо 281

Как я могу это сделать?

$attrtext = 'myatttext';
$product->addAttributeUpdate('manufacturer', $attrtext->getId() /* ???????? */);
Author: 7ochem, 2014-04-28

2 answers

Чтобы достичь того, что вы ищете, выполните следующий код:

// attribute code
$attribute_code = 'manufacturer';

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

// load attribute by attribute code
$attribute = $productModel->getResource()->getAttribute($attribute_code);

// load product by sku 
$product = $productModel->loadByAttribute('sku', 'mysku');

// Validate attribute
if ($attribute->usesSource()) { 
    // load option Id by value text
    $attribute_value_id = $attribute->getSource()->getOptionId('myatttext'); 

    // update product attribute
    $product->addAttributeUpdate($attribute_code, $attribute_value_id);

    echo $product->getAttributeText($attribute_code);
}

Я надеюсь, что это то, что вы ищете.

 7
Author: Aboodred1, 2014-04-28 20:45:22

Попробуйте это

 $attribute = $_product->getResource()->getAttribute('custom_attribute_code');
if ($attribute)
{
    echo $attribute_value = $attribute ->getFrontend()->getValue($_product);
}
 0
Author: Keshav Kalra, 2015-04-03 10:21:17