Magento добавляет новые параметры в раскрывающийся список

Привет. В настоящее время я пишу сценарий синхронизации продукта для magento. Я знаю, как добавить новый продукт с заданным набором атрибутов. Однако одним из атрибутов, которые я использую, является поле размера. Когда встречается новый размер, я хочу добавить эту опцию в атрибут, мне интересно, как это сделать, пожалуйста?


person mfisher86    schedule 16.03.2010    source источник


Ответы (3)


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

$attributeInfo = Mage::getResourceModel('eav/entity_attribute_collection')
 ->setCodeFilter(YOUR_ATTRIBUTE_CODE)
 ->getFirstItem();

$options = $attributeInfo->getSource()->getAllOptions(false);
$_optionArr = array(
     'value'  => array(), 
     'order'  => array(), 
     'delete' => array()
);
foreach ($options as $option) {
    $_optionArr['value'][$option['value']] = array($option['label']);
}
$_optionArr['value']['option_1'] = array(NAME_OF_OUR_NEW_OPTION);
$attribute->setOption($_optionArr);
$attribute->save();

...

person Łukasz Linczewski    schedule 25.08.2010
comment
не забудьте вызвать Mage::getModel('catalog/product')->getResource()->unsetAttributes() сразу после приведенного выше кода, чтобы Magento обновила эту модель атрибутов новыми параметрами. - person doc_id; 30.06.2013

Поместите файл, т.е.: test-attribute.php в корень вашего Magento.

<?php
// Include and start Magento
require_once dirname(__FILE__).'/app/Mage.php';
Mage::app()->setCurrentStore(Mage_Core_Model_App::ADMIN_STORE_ID);
// Load attribute model and load attribute by attribute code
$model = Mage::getModel('catalog/resource_eav_attribute')->load('some_dropdown_attribute', 'attribute_code');
// Get existing options
$options = $model->getSource()->getAllOptions(false);
// Get the count to start at
$count = count($options) + 1;
// Prepare array
$data = array(
    'option' => array(
        'value' => array(),
        'order' => array()
    )
);
// You can loop here and increment $count for multiple options
$key = 'option_'.$count;
$data['option']['value'][$key] = array('Test '.$count);
$data['option']['order'][$key] = 0;
// Add array to save
$model->addData($data);
// Save
$model->save();

Следует создать новую опцию с именем Test X для атрибута. Протестировано на Magento Enterprise 1.11.2

person Kus    schedule 16.08.2012

После того, как я еще немного осмотрелся, я наконец узнал, как это сделать. Затем я нашел расширение для xml-api, которое расширяет API для поддержки операций, которые я хотел выполнить.

Я использовал расширение MagentoEXtended.

person mfisher86    schedule 29.03.2010