2011-04-11 121 views
1

我需要使用Web服务API获取属于Magento中特定类别的所有产品。我试过这种方法:使用基于SOAP的API在Magento中获取产品类别列表

$product_filter = array(
     'category_ids' => array('eq' => '41') 
    ); 

$product_templates = $magento_client -> call($magento_session, 'product.list'); 

但它返回一个错误。我只能假设它是因为category_ids是一个数组,所以它不会真的等于一个特定的值。

我做了一些研究,发现另一种方法叫做category.assignedProducts和尝试:

$product_templates = 
$magento_client -> 
    call($magento_session, 'catalog_category.assignedProducts', array('41')); 

但这返回错误的“拒绝访问”。我去看了看Magneto的沙箱,看到'Assigned Products'有3个选项:'Remove','Update','Assign',我知道我连接的系统管理员已经设置了我的权限到'只读'。所以我猜测我们必须在列表中检查'assign',这会给我更多的访问权限。

我可以检索所有的数据并在我的末端执行过滤,但我想检查是否有人知道更好的方法。

谢谢。

回答

0

我想我发现了http://www.magentocommerce.com/boards/viewthread/207099/答案基本上说,它不能从该产品的任何更多的事。我们现在必须从类别的角度来看问题。

category_ids不再1.4工作,他们改变了表 结构周围,这样的分类并不是可在 产品。使用下面的代码从类别中获取产品,然后执行catalog_product.list调用。为了让它更快,您还可以创建一个自定义api解决方案,将这些解决方案合并到Magento中,并且只需一次调用即可执行 而不是两次。

$ proxy = new SoapClient($ soapUrl.'api/soap /?wsdl'); $ sessionId = $ proxy-> login($ apiUser,$ apiPass); ('sessionId, 'catalog_category.assignedProducts',array('4')); $ proxy-> endSession($ sessionId);的print_r($ productList的);