PrestaShop - 通过API检索产品

时间:2014-03-31 22:03:22

标签: codeigniter-2 prestashop-1.5

有没有办法通过API构建一系列PrestaShop产品,以便我可以在外部应用程序中使用它们?

我只是想要这样的东西:

array(
    0 => array(
        'name' => 'Some product',
        'image' => 'path/to/image.jpg',
        'id' => 1,
        'description' => 'Some description of the product here',
        'path' => 'path/to/product'
    ),
    ...
    999 => array(
        ...
    )
);

我知道web服务调用array('resource' => 'products', 'display' => 'full'),但我真的不知道如何从这个webservice调用返回的内容到达我需要的数组。我想做的就是在外部网站上显示产品卷轴,每个图像链接到商店中的产品。

我正在使用Prestashop 1.5.6.2和CodeIgniter 2.1.4。产品卷轴必须显示在CI应用程序中。

修改1 我最接近的是:产品编号1的$product = new Product(1, false, 1);,但它不包含图像。

1 个答案:

答案 0 :(得分:5)

require_once('PSWebServiceLibrary.php');

$url = 'http://example.com';
$webService = new PrestaShopWebservice($url, 'EXAMPLEAPIKEY', false);

$opt['resource'] = 'products';
$opt['display'] = 'full';
$xml = $webService->get($opt);
$productNodes = $xml->products->children();
$products = array();
foreach ($productNodes as $product) {
  $nameLanguage = $product->xpath('name/language[@id=1]');
  $name = (string) $nameLanguage[0];
  $idImage = (string) $product->id_default_image;
  $image = '/img/p/';
  for ($i = 0; $i < strlen($idImage); $i++) {
    $image .= $idImage[$i] . '/';
  }
  $image .= $idImage . '.jpg';
  $id = (int) $product->id;
  $descriptionLanguage = $product->xpath('description/language[@id=1]');
  $description = (string) $descriptionLanguage[0];
  $path = '/index.php?controller=product&id_product=' . $product->id;
  $products[] = array('name' => $name, 'image' => $image, 'id' => $id, 'description' => $description, 'path' => $path);
}