Produtos de filtro Prestashop por categoria usando WebService

Estou tentando usar o Prestashop WebService via PHP para filtrar produtos por categorias, mas parece que é impossível.

Como fazer isso? Deve ser algo assim

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

Qual versão do Prestashop você usa?

Consegui obter produtos para uma categoria específica para v1.5.6.1 da seguinte maneira:

 $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(); 

Nesta fase você obtém uma coleção de produtos. Você pode alcançar as propriedades usando a notação de object padrão ..

 $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; 

Você deve poder ver os elementos expostos ao atingir o YOUR_SITE/api/products?schema=synopsis

Tudo bem, mas não consegui recuperar URLs de produtos ainda para imprimir âncoras … Alguém? Alguma proposição?

Documentação completa (1.5) aqui

Espero que ajude.

EDITAR

Construa URLs de produtos ao vivo

  1. Faça uma primeira chamada de API para recuperar a categoria (s / y) que deseja e seus dados (url slug, ids of products they own, …)
  2. Faça uma segunda chamada de API para recuperar os dados reais correspondentes aos ids recuperados durante o primeiro passo.

Slugs estão disponíveis sob a propriedade link_rewrite de collections de itens (como categorias e produtos). Haverá tantas lesmas como o total de idiomas que foram configurados a partir do back-end, então você pode querer link_rewrite propriedade link_rewrite para obtê-los todos e criar todos os URLs.

 ## 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 .. } }