コードを使用して (プログラムで) Magento のドロップダウン属性のオプションを更新/追加したい。属性オプションを追加する方法はわかりましたが、オプション値を更新するにはどうすればよいですか。
例:
属性が「manufacturer」であるとします。man1、man2、man3 の 3 つのオプションを追加しました。ここで、カスタム コードを使用して、man1 のラベルを man11 に、man2 を man22 に変更します。どうすればそれを達成できますか?ありがとう。
質問する
11623 次
2 に答える
3
さて、私は自分で解決策を見つけました。詳細はこちらをご覧ください。
//Get the eav attribute model
$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;
}
于 2012-05-02T17:47:43.120 に答える
0
app\code\core\Mage\Adminhtml\controllers\Catalog\Product\AttributeController.php にある AttributeController を拡張してsaveAction()
、必要に応じてメソッドをオーバーライドしてみてください。
于 2012-05-02T06:06:08.383 に答える