使用SKU更新Magento产品属性

时间:2014-11-04 09:38:01

标签: magento attributes product

我搜索了SO,Google和Magento论坛。这些解决方案都没有帮助。

我正在尝试通过Joomla更新产品的自定义属性!使用Magento的SOAP API V1的组件。事实上,我得到的结果表明更新成功了。

检查Magento后端时,此特定产品的任何内容都没有变化,显然是通过我的脚本更新的。

我通过Ajax请求发送值。值为100%(三重检查)。该产品存在于Magento。

我试图使用产品的SKU(数字而非数字)来做到这一点,但即使ID也给我相同的结果。

我现在的代码(我尝试了很多变体):

$data = trim($_REQUEST['badgedata']);
$sku = trim($_REQUEST['skudata']);

$update_data = array(
    'additional_attributes' => array(
        'single_data' => array( 
            array(
                'badge' => $data
            )
        )
    )
);

$mage_url = 'http://localhost/magentosite/index.php/api/soap?wsdl'; 
$mage_user = 'magentousername'; 
$mage_api_key = 'magentoapikey';

$soap = new SoapClient( $mage_url );

$session_id = $soap->login( $mage_user, $mage_api_key );

$update = $soap->call($session_id, 'catalog_product.update', array($sku, $update_data));

希望这是足够的信息。我错过了什么吗?

任何帮助将不胜感激!谢谢:))

1 个答案:

答案 0 :(得分:1)

好的,

我在post here的帮助下解决了这个问题。修补“app / code / core / Mage / Catalog / Model / Product / Api / V2.php”

在第263行附近的某处:

if (property_exists($productData, 'additional_attributes')) {...}

放置第3个 IF 声明:

if (gettype($productData->additional_attributes) == 'array') {
    foreach ($productData->additional_attributes as $k => $v) {
        $_attrCode = $k;
        $productData->$_attrCode = $v;
    }
}

现在使用SOAP API的V2(我应该在第一时间完成* -.-)

新工作代码:

$data = trim($_REQUEST['badgedata']);
$sku = trim($_REQUEST['skudata']);

$update_data = array (
    'additional_attributes' => array (
        'single_data' => array (
            array ('key' => 'badge', 'value' => $data)
        )
    )
);

$mage_url = 'http://localhost/magentosite/index.php/api/v2_soap?wsdl'; 
$mage_user = 'magentousername'; 
$mage_api_key = 'magentoapikey';

$soap = new SoapClient( $mage_url );

$session_id = $soap->login( $mage_user, $mage_api_key );

$update = $soap->catalogProductUpdate($session_id, $sku, $update_data);

感谢stroisi