如何检索与可配置产品关联的简单产品

时间:2012-10-19 17:02:52

标签: c# api magento

我正在使用magento soap api v2和c#。我一直在打电话

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

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

如何实现这一目标?

4 个答案:

答案 0 :(得分: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 extension。这就是我在解决方案停止为我工作时所做的事情,并且从未后悔过这个决定。

答案 1 :(得分:3)

我不认为你使用默认的magento SOAP api可以做什么。

您可以做的是创建自定义API

例如

How to setup custom api for Magento with SOAP V2?

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);
}

答案 2 :(得分:0)

请注意,应该

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

不是

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

大写字母LIKE不起作用。

答案 3 :(得分:-1)

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

  

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

https://github.com/Yameveo/Yameveo_ProductInfo