使用基于SOAP的API在Magento中按类别获取产品列表

时间:2011-04-11 19:03:52

标签: php web-services magento

我需要使用Web服务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',这会给我更多的访问权限。

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

感谢。

2 个答案:

答案 0 :(得分:0)

assignedProducts听起来像你需要的但你不应该传递一个数组,而是一个整数值和商店ID或代码。

查看所需参数:http://www.magentocommerce.com/wiki/doc/webservices-api/api/catalog_category#catalog_category.assignedproducts

答案 1 :(得分: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->登录($ apiUser,$ apiPass);

     

$ productList = $ proxy-> call($ sessionId,   'catalog_category.assignedProducts',array('4'));   $的Proxy-> endSession($的sessionId);的print_r($ productList的);