0

製品 ID に対して製品属性の値を追加するにはどうすればよいですか。コードを使用して特定の製品 ID の属性値を追加したい。製品属性のコードは

$attr_model = Mage::getModel('catalog/resource_eav_attribute');

//Load the particular attribute by id
//Here 73 is the id of 'manufacturer' attribute
$attr_model->load(73);

//Create an array to store the attribute data
$data = array();

//Create options array
$values = array(
    //15 is the option_id of the option in 'eav_attribute_option_value' table
    15 => array(
            0 => 'Apple'    //0 is current store id, Apple is the new label for the option
        ),
    16 => array(
            0 => 'HTC'
        ),
    17 => array(
            0 => 'Microsoft'
        ),
);

//Add the option values to the data
$data['option']['value'] = $values;

//Add data to our attribute model
$attr_model->addData($data);

//Save the updated model
try {
    $attr_model->save();
    $session = Mage::getSingleton('adminhtml/session');
    $session->addSuccess(
        Mage::helper('catalog')->__('The product attribute has been saved.'));

    /**
     * Clear translation cache because attribute labels are stored in translation
     */
    Mage::app()->cleanCache(array(Mage_Core_Model_Translate::CACHE_TAG));
    $session->setAttributeData(false);
    return;
} catch (Exception $e) {
    $session->addError($e->getMessage());
    $session->setAttributeData($data);
    return;
}
4

1 に答える 1

0

こんにちは、検索後、属性値を保存するコードを見つけて、製品に対して保存します。これは私のコードです:

public static function getAttributeOptionId($arg_attribute, $arg_value,$id)
     {
        $id = $id;
        //load the attribute by attribute code
    $entityTypeID = Mage::getModel('eav/entity')->setType('catalog_product')->getTypeId();
    $attribute_model        = Mage::getModel('eav/entity_attribute');
    $attribute_options_model= Mage::getModel('eav/entity_attribute_source_table') ;

    $attribute_code         = $attribute_model->getIdByCode('catalog_product', $arg_attribute);
    $attribute              = $attribute_model->load($attribute_code);

    $attribute_table        = $attribute_options_model->setAttribute($attribute);
    $options                = $attribute_options_model->getAllOptions(false);
    $type =  $attribute->getBackendType();

 foreach($options as $option) {
        if ($option['label'] == $arg_value) {
           $arrk[] = $option['label'];
        }
    }

$optiont = self::getAttributeOptionValue($arg_attribute, $arg_value);

if(!$optiont){
    $value['option'] = array($arg_value,$arg_value);
    $result = array('value' => $value);
    $attribute->setData('option',$result);
    $attribute->save();
    $product = Mage::getModel('catalog/product')->load($id);
    $product->setMyAttribute($arg_attribute)->save();


 }
    return 0;



    }
    public function getAttributeOptionValue($arg_attribute, $arg_value) {
    $attribute_model        = Mage::getModel('eav/entity_attribute');
    $attribute_options_model= Mage::getModel('eav/entity_attribute_source_table') ;

    $attribute_code         = $attribute_model->getIdByCode('catalog_product', $arg_attribute);
    $attribute              = $attribute_model->load($attribute_code);

    $attribute_table        = $attribute_options_model->setAttribute($attribute);
    $options                = $attribute_options_model->getAllOptions(false);

    foreach($options as $option) {
        if ($option['label'] == $arg_value) {
            return $option['value'];
        }
    }

    return false;
}.

$arg_attribute は属性コードで、$arg_value は彼の値です。Id は特定の SKU の製品 ID です。カスタム モジュールにレコードを保存しています。誰かがこのコードの問題を知っている場合はお知らせください。ありがとうございます。

于 2013-03-01T05:18:40.017 に答える