Prestashop фильтрует продукты по категориям с помощью WebService

Я пытаюсь использовать Prestashop WebService через PHP для фильтрации продуктов по категориям, но кажется, что это невозможно.

Как это сделать? Должно быть что-то вроде этого

array('resource' =>'products', 'display' => '[name]', 'filter[category]' => '[x]'); 

Какую версию Prestashop вы используете?

Мне удалось получить продукты для определенной категории для версии 1.5.6.1 следующим образом:

 $webService = new PrestaShopWebservice( YOUR_SITE_URL, YOUR_API_KEY, false ); $opt = array( 'resource' => 'products', 'display' => 'full', 'filter[id_category_default]' => '[8]', 'limit' => '5' ); $xml = $webService->get($opt); $resources = $xml->products->children(); 

На этом этапе вы получаете коллекцию продуктов. Вы можете достичь свойств, используя стандартную нотацию объекта.

 $xml->categories->category->associations->products->product foreach ( $resources as $key => $value ) : echo $value->id; // product's identifier echo $value->price; // product's .. guess what ! endforeach; - $xml->categories->category->associations->products->product foreach ( $resources as $key => $value ) : echo $value->id; // product's identifier echo $value->price; // product's .. guess what ! endforeach; 

Вы должны иметь возможность видеть элементы, открытые путем достижения YOUR_SITE/api/products?schema=synopsis

Это нормально, но я еще не смог найти URL-адреса продуктов для печати якорей. Кто-нибудь? Любое искушение?

Полная документация (1.5) здесь

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ

Построить URL-адреса продуктов на лету

  1. Сделайте первый вызов API для извлечения категорий (ies / y), которые вы хотите, и их данных (URL-адрес, идентификаторы продуктов, которыми они владеют, …)
  2. Сделайте второй вызов API для извлечения фактических данных, соответствующих идентификаторам, полученным на первом этапе.

link_rewrite доступны под свойством link_rewrite коллекций предметов (например, категорий и продуктов). Будет столько слизней, сколько общее количество языков, которые были настроены из link_rewrite , поэтому вам может понадобиться link_rewrite свойство link_rewrite чтобы получить их все и построить все URL-адреса.

 ## Initialize Prestashop API $webService = new PrestaShopWebservice( YOUR_SITE_URL, YOUR_API_KEY, false ); ## Getting category I want $opt = array( 'resource' => 'categories', 'display' => 'full', 'filter[id]' => '[70]', # we are interested only in one category 'limit' => '1' ); $xml = $webService->get($opt); $ws_cat = $xml->categories->category; $products = $ws_cat->associations->products->product; ## Gathering products ids to feed the second API call filter parameter $productsIds = array(); foreach ( $products as $p ) { $productsIds[] = (int)$p->id; } ## Getting products .. $opt = array ( 'resource' => 'products', 'display' => 'full', 'filter[id]' => '['.implode('|',$productsIds).']', 'limit' => '4' ); $xml = $webService->get($opt); $products = $xml->products->product; if ( count($products) ) { $products = array(); foreach ( $products as $value ) { $products[] = array( 'id' => $value->id ,'catalogURL' => "{$prestashop['url']}/{$ws_cat->link_rewrite->language[0]}/{$value->id}-{$value->link_rewrite->language[0]}.html"; ); # There you go .. } }