#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);