Получение списка продуктов по категориям в Magento с использованием API на основе SOAP - PullRequest
1 голос
/ 11 апреля 2011

Мне нужно получить все продукты, относящиеся к определенной категории в 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 варианта: «Удалить», «Обновить», «Назначить», и я знаю, что администратор системы, на которую я ссылаюсь, установил мой доступ. на «Только для чтения». Поэтому я предполагаю, что нам нужно было бы пометить «назначить» в этом списке, что дало бы мне больше доступа, чем они хотели бы дать.

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

Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2011

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

category_ids больше не работает в 1.4, они изменили таблицу структуры вокруг, так что категории не доступны на товар. Используйте код ниже, чтобы получить продукты из категории и затем выполните вызов catalog_product.list. Чтобы сделать это быстрее, вы также можете создать собственное решение 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);

0 голосов
/ 11 апреля 2011

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...