2010-03-16 63 views
4

您好,我正在爲magento編寫產品同步腳本。我知道如何添加具有給定屬性集的新產品。然而,我使用的屬性之一是尺寸字段。當遇到新的尺寸時,我想將此選項添加到屬性,我想知道如何做到這一點?Magento將新選項添加​​到下拉屬性

回答

-2

在做了一些更多的四處張望之後,我終於找到了如何去做。然後我找到了擴展api的xml-api擴展,以支持像我想要的那樣的操作。

我使用的擴展是MagentoeXtended

0

你是如何做同步?用PHP腳本還是通過XML-RPC/SOAP API?或者另一種方法?

5

這裏是一個腳本來添加新的選項從產品圖片或塊的屬性:

$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(); 

...

+0

此代碼不起作用 – josephtikva1

+0

它與Magento 1.7一起使用,謝謝。 – rahmanisback

+0

別忘了打電話給 'Mage :: getModel('catalog/product') - > getResource() - > unsetAttributes()' 就在上面的代碼之後,所以Magento用新選項刷新了屬性模型。 – rahmanisback

4

把一個文件即:測試-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

相關問題