【问题标题】:Magento SOAP API - catalog_product_attribute_media.list not finding SKUMagento SOAP API - catalog_product_attribute_media.list 未找到 SKU
【发布时间】:2014-03-19 22:55:12
【问题描述】:

我一直在尝试使用 SOAP API 将数千个产品图像导入 Magento 1.8.1.0 网站。

虽然有一些已经进口,但数百个没有。

为了尝试找出发生这种情况的位置,我使用了以下 API 命令:

catalog_product_attribute_media.list

这会返回某些 SKU 的错误:“产品不存在”。这是一个真正的 API 错误,记录在 http://www.magentocommerce.com/wiki/doc/webservices-api/api/catalog_product_attribute_media#faults

但是,发生这种情况的 SKU 肯定存在于 Magento 中,因为我可以搜索它们并在管理面板中查看它们。

$result = $client->call($session, 'catalog_product_attribute_media.list', '452103');

上面的代码会导致一个异常,说“产品不存在”,这意味着它找不到 SKU 452103 的任何东西。但是如果我在管理面板中搜索 SKU 452103,它就在那里!

奇怪的是,如果我获得该 SKU 的 Magento 产品 ID(在上面的示例中恰好是 3478)并运行以下命令,它可以正常工作:

$result = $client->call($session, 'catalog_product_attribute_media.list', '3478');

有谁知道我做错了什么或为什么会发生这种情况? API 文档说我作为 call() 的第二个参数传递的内容可以是产品 ID 或 SKU。

我只能在实践中使用 SKU,因为我的源数据不知道 Magento 产品 ID 是什么,但 SKU 已在未修改的情况下导入。上面我使用 Product ID = 3478 的代码只是我用来测试它是否会输出任何东西,但我必须手动找到这个 Product ID,这对于我需要修复的图像数量来说是不切实际的。

【问题讨论】:

    标签: php api magento soap


    【解决方案1】:

    请阅读 API 文档:http://www.magentocommerce.com/api/soap/catalog/catalogProductAttributeMedia/catalog_product_attribute_media.list.html

    您会看到有第四个参数identifierType 表示“定义产品 ID 或 SKU 是否在 'product' 参数中传递”。

    您每次调用时,API 都会假定它是产品的 ID。因此,要使其仅按 SKU 工作,您应该使用以下内容;

    $result = $client->call($session, 'catalog_product_attribute_media.list', '452103', 'sku');
    

    还有更多 API 调用(与产品相关),它们都以相同的方式工作,但默认情况下,除非您指定标识符类型,否则 magento 将始终假定您使用产品 ID 而不是 SKU。

    【讨论】:

      猜你喜欢
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多