使用数字SKU时,Magento 1.6.0 API产品更新无法正常工作

时间:2011-10-20 11:56:04

标签: magento

我的产品都使用数字SKU,但在使用API​​进行产品更新时似乎会出现问题。

根据API doc,您可以使用产品ID或SKU。

参数:

  • 混合产品 - 产品ID或Sku
  • array productData - 属性值数组
  • mixed storeView - 商店视图ID或代码(可选)

但完全数字的SKU似乎不起作用。 我确信某处有一些代码会检查该值是否为数字并假设我必须提供产品ID。

我也读过某个地方,你可以传递第4个参数来指定你正在使用sku,但这也不起作用。

$proxy->call($sessionId, 'product.update', array('123456', array('name'=>'Updated name1'), null, 'sku') );

有谁知道如何使这个工作?

2 个答案:

答案 0 :(得分:3)

简短的回答是某个地方有一个错误阻止product.update的最后一个参数被正确设置(或者Varien尚未实现它),这也为方法product.info带来了问题

快速解决方法(如果您不介意丢失按ID更新的选项)只是在Product API $identifierType方法中设置update()

app/code/core/Mage/Catalog/Model/Product/Api.php l.198

public function update($productId, $productData, $store = null, $identifierType = 'sku')

最后在app / code / core / Mage / Catalog / Helper / Product.php的l.427左右的方法getProduct()的if($ idBySku)条件下加载产品

$productId = $idBySku;
$product->load($productId);

这有点软糖。我将寻找一个更好的解决方法作为覆盖;否则,也许其他人可以发布更好的解决方案。

答案 1 :(得分:3)

在类似的question TurmDrummer中发布了另一种解决方法: https://stackoverflow.com/a/10915276/1598270

  

纯数字或混合SKU有一种解决方法,它运行安静   对我好。

     

只需在SKU末尾添加一个空格即可。 Magento将解释   作为SKU的值,因为空格是非数字的。 Internaly   Magento稍后修剪空白

     

这完全适用于Magento 1.4.x - 1.7。

我更喜欢这个解决方案作为一种解决方法因为你没有修改任何核心代码文件,我试图避免这种情况。