2011-04-11 119 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的);