Получение списка товаров по категориям в Magento с использованием SOAP-based API

#php #web-services #magento

#php #веб-сервисы #magento

Вопрос:

Мне нужно получить все товары, относящиеся к определенной категории в Magento, используя API веб-служб. Я попробовал этот метод:

 $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 и увидел, что «Назначенные товары» имеют 3 варианта: «Удалить», «Обновить», «Назначить», и я знаю, что администратор системы, на которую я ссылаюсь, установил для меня доступ «Только для чтения». Итак, я предполагаю, что нам пришлось бы отметить ‘assign’ в этом списке, что дало бы мне больше доступа, чем они хотят предоставить.

Я мог бы извлечь все данные и выполнить фильтрацию со своей стороны, но я хотел проверить, знает ли кто-нибудь способ получше.

Спасибо.

Ответ №1:

assignedProducts звучит как то, что вам нужно, но вам не нужно передавать массив, а целое значение и идентификатор магазина или код.

Смотрите требуемые аргументы: http://www.magentocommerce.com/wiki/doc/webservices-api/api/catalog_category#catalog_category.assignedproducts

Ответ №2:

Я думаю, что нашел ответ наhttp://www.magentocommerce.com/boards/viewthread/207099 / который в основном говорит, что это больше не может быть сделано из продукта. Теперь мы должны взглянуть на проблему с точки зрения категории.

category_ids больше не работает в версии 1.4, они изменили структуру таблиц таким образом, что категории недоступны для продукта. Используйте приведенный ниже код, чтобы получить товары из категории, а затем выполнить catalog_product.вызов списка. Чтобы ускорить процесс, вы также можете создать пользовательское решение api для объединения их в Magento и выполнения всего одного вызова вместо двух.

$proxy = новый SoapClient($soapUrl.’api/soap/?wsdl’); $SessionID = $proxy->login($apiUser, $ apiPass);

$ProductList = $proxy-> call($SessionID, ‘catalog_category.assignedProducts’, массив(’4’)); $proxy-> EndSession($SessionID); print_r($ProductList);