Я пытаюсь использовать 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-адреса продуктов на лету
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 .. } }