Intereting Posts
Написание парсера запросов PHP с регулярными выражениями проверить вывод php exec всегда возвращает пустой массив return return return ($ var & 1)? Laravel 5.2 – Используйте строку в качестве настраиваемого основного ключа для ярко выраженной таблицы. 0 сохранить значение checkbox в базе данных mysql комментарии «//» с регулярным выражением, но не внутри цитаты Как добавить рейтинг в список сортировки в Magento 1.7 Вызовы в шаблонах Установка pecl и груши на OS X 10.11 El Capitan, macOS 10.12 Sierra, macOS 10.13 High Sierra PHP Неустранимая ошибка: «Swift_TransportException» с сообщением «Не удалось выполнить проверку подлинности на SMTP-сервере Как предотвратить перепродажу источника PHP? Не тестируемый базовый класс, расширяющий PHPUnit_Framework_TestCase WordPress Woocommerce – используйте update_post_meta для добавления атрибутов продукта Условия проектирования MVC: CRUDing унаследованные модели PHP SoapClient: исключение SoapFault Не удалось подключиться к хосту

Добавить новые значения в параметр атрибута в magento

Я пытаюсь добавить новые значения в параметр атрибута в magento, используя скрипт для ускорения процесса, так как у меня более 2000 производителей

Solutions Collecting From Web of "Добавить новые значения в параметр атрибута в magento"

Вот фрагмент кода, который я использовал для выполнения именно этой задачи. Создайте собственный модуль (используя ModuleCreator в качестве инструмента), а затем создайте mysql4-install-0.1.0.php в папке sql / modulename_setup. Он должен содержать следующее (адаптированное к вашим собственным данным, конечно!).

 $installer = new Mage_Eav_Model_Entity_Setup('core_setup'); $installer->startSetup(); $aManufacturers = array('Sony','Philips','Samsung','LG','Panasonic','Fujitsu','Daewoo','Grundig','Hitachi','JVC','Pioneer','Teac','Bose','Toshiba','Denon','Onkyo','Sharp','Yamaha','Jamo'); $iProductEntityTypeId = Mage::getModel('catalog/product')->getResource()->getTypeId(); $aOption = array(); $aOption['attribute_id'] = $installer->getAttributeId($iProductEntityTypeId, 'manufacturer'); for($iCount=0;$iCount<sizeof($aManufacturers);$iCount++){ $aOption['value']['option'.$iCount][0] = $aManufacturers[$iCount]; } $installer->addAttributeOption($aOption); $installer->endSetup(); 

Дополнительная документация по wiki Magento, если вы хотите.

Если вы не хотите делать это в настраиваемом модуле, вы можете просто создать файл php, который начинается с:

 require_once 'app/Mage.php'; umask(0); Mage::app('default'); 

Ответ Джонатана верен. Но если вы хотите выполнить его без установщика, то есть в любом другом коде, вы можете найти это полезным:

 $arg_attribute = 'manufacturer'; $manufacturers = array('Sony','Philips','Samsung','LG','Panasonic','Fujitsu','Daewoo','Grundig','Hitachi','JVC','Pioneer','Teac','Bose','Toshiba','Denon','Onkyo','Sharp','Yamaha','Jamo'); $attr_model = Mage::getModel('catalog/resource_eav_attribute'); $attr = $attr_model->loadByCode('catalog_product', $arg_attribute); $attr_id = $attr->getAttributeId(); $option['attribute_id'] = $attr_id; foreach ($manufacturers as $key=>$manufacturer) { $option['value'][$key.'_'.$manufacturer][0] = $manufacturer; } $setup = new Mage_Eav_Model_Entity_Setup('core_setup'); $setup->addAttributeOption($option); 

Более подробную информацию можно найти здесь .

Я создал функцию для динамического добавления параметра атрибута

 public function addAttributeOptions($attributeCode, $argValue) { $attribute = Mage::getModel('eav/config') ->getAttribute(Mage_Catalog_Model_Product::ENTITY, $attributeCode); if ($attribute->usesSource()) { $id = $attribute->getSource()->getOptionId($argValue); if ($id) return $id; } $value = array('value' => array( 'option' => array( ucfirst($argValue), ucfirst($argValue) ) ) ); $attribute->setData('option', $value); $attribute->save(); //return newly created option id $attribute = Mage::getModel('eav/config') ->getAttribute(Mage_Catalog_Model_Product::ENTITY, $attributeCode); if ($attribute->usesSource()) { return $attribute->getSource()->getOptionId($argValue); } } 

Вы можете добавить параметр в свой атрибут, указав код и значение параметра

 $this->addAttributeOptions('unfiorm_type', 'leotartd') 

Важный! (Надеюсь, это помогает кому-то, потому что я застрял как 2h с этой проблемой)

Если вы используете специальные символы (например, ä, ö, ü, ß, ×, …), обязательно закодируйте их правильно!

 array_walk($manufacturers , create_function('&$val', '$val = utf8_encode($val);')); 

Вот простой и очень быстрый способ …

Удалить опцию

 /* My option value */ $value = 'A value'; /* Delete an option */ $options = array(); $entity_type_id = Mage::getModel('eav/entity')->setType('catalog_product')->getTypeId(); // Product Entity Type ID $attribute = Mage::getModel('eav/entity_attribute')->loadByCode($entity_type_id, $attribute_code); // Load attribute by code if ($attribute && $attribute->usesSource()) { $option_id = $attribute->getSource()->getOptionId($value); // Check Option ID from value... if ($option_id) { $options['delete'][$option_id] = true; $attribute->setOption($options)->save(); } } /* END ! */ 

Добавить или обновить параметр

 /* Add/Update an option */ $options = array(); $entity_type_id = Mage::getModel('eav/entity')->setType('catalog_product')->getTypeId(); // Product Entity Type ID $attribute = Mage::getModel('eav/entity_attribute')->loadByCode($entity_type_id, $attribute_code); // Load attribute by code if ($attribute && $attribute->usesSource()) { $option_id = $attribute->getSource()->getOptionId($value); // Check Option ID... $options['order'][$option_id] = 10; // Can be removed... Set option order... $options['value'][$option_id] = array( 0 => $value, // Admin Store - Required ! 1 => $value, // Store id 1 - If U want ! Can be removed ); $attribute->setDefault(array($option_id)); /* If you want set option as default value */ $attribute->setOption($options)->save(); /* That's all */ } /* END ! */ 

В своем учебном пособии я объясняю, как читать параметры из CSV и создавать параметры программно.

http://www.pearlbells.co.uk/add-attribute-options-magento-scripts/, пожалуйста, щелкните учебник для дальнейшего объяснения

 function createAttribute($options) { $option = array('attribute_id' => Mage::getModel('eav/entity_attribute')->getIdByCode( Mage_Catalog_Model_Product::ENTITY, 'color' ) ); for ($i = 0; $i < count($options); $i++) { $option['value']['option'.$i][0] = $options[ $i ]; // Store View $option['value']['option'.$i][1] = $options[ $i ]; // Default store view $option['order']['option'.$i] = $i; // Sort Order } $setup = new Mage_Eav_Model_Entity_Setup('core_setup'); $setup->addAttributeOption($option); }