3

嗨,我正在使用带有 c# 的 magento soap api v2。我一直在打电话

 var groupedProducts = magentoService.catalogProductLinkList(sessionId, "grouped", id, "productId");

确实返回分组产品,但我想检索简单的产品,例如与可配置 T 恤相关联的绿色大 T 恤。

如何做到这一点?

4

4 回答 4

3

不幸的是,使用 magento SOAP api 是不可能的。您无法通过 api 检索父产品的子产品。相信我,我前段时间自己解决了这个问题。我可以建议 2 个修复和 1 个解决方法。

解决方法- 尝试按 sku 或名称检索子产品。如果您的所有子产品都使用父产品的名称或 sku 作为前缀,这可以工作。我一开始就是这样解决的,只要客户没有引入与父名称不匹配的子产品名称,它就可以很好地工作。这是一些示例代码:

//fetch configurable products
filters filter = new filters();
filter.filter = new associativeEntity[1];
filter.filter[0] = new associativeEntity();
filter.filter[0].key = "type_id";
filter.filter[0].value = "configurable";

//get all configurable products
var configurableProducts = service.catalogProductList(sessionID, filter, storeView);

foreach (var parent in configurableProducts)
{
    filters filter = new filters();
    filter.filter = new associativeEntity[1];
    filter.filter[0] = new associativeEntity();
    filter.filter[0].key = "type_id";
    filter.filter[0].value = "configurable";
    filter.complex_filter = new complexFilter[1];
    filter.complex_filter[0] = new complexFilter();
    filter.complex_filter[0].key = "sku";
    filter.complex_filter[0].value = new associativeEntity() { key="LIKE", value=parent.sku + "%" };

    var simpleProducts = service.catalogProductList(sessionID, filter, storeView);

    //do whatever you need with the simple products

}

修复 #1 - 免费 - 编写您自己的 api 扩展。要检索您可以使用的子产品:

$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null, $product);

然后,您将结果发送给 api 调用者,一切都会好起来的。不过,我自己还没有尝试过,所以我不确定是否还有其他问题。

修复 #2 - 付费 - 从 netzkollektiv 获取(优秀但昂贵的)CoreAPI 扩展。这就是当解决方法对我停止工作并且从不后悔这个决定时我所做的。

于 2012-10-21T21:49:50.213 回答
3

我认为您尝试使用默认的 magento SOAP api 是不可能的。

你可以做的是创建一个自定义 api

例如。

如何使用 SOAP V2 为 Magento 设置自定义 api?

http://www.magentocommerce.com/api/soap/create_your_own_api.html

然后创建逻辑来检索与该可配置产品关联的所有简单产品。

$_product  = Mage::getModel('catalog/product')->load($id);
// check if it's a configurable product
if($_product->isConfigurable()){
   //load simple product ids
   $ids = $_product->getTypeInstance()->getUsedProductIds(); 
   OR
  $ids = Mage::getResourceModel('catalog/product_type_configurable')->load($_product);
}
于 2012-10-21T22:34:55.707 回答
0

请注意,它应该是

... new associativeEntity() { key="like", ...

并不是

... new associativeEntity() { key="LIKE", ....

大写 LIKE 不起作用。

于 2018-10-11T11:40:48.983 回答
-1

我在 Github 上找到了一个 Magento 扩展,其中包含此功能。

在同一响应中获取可配置的子产品信息。

https://github.com/Yameveo/Yameveo_ProductInfo

于 2016-02-10T14:48:21.473 回答