Image Principale

Créer une catégorie sur Prestashop avec le WebService


Nous verrons ici comment créer des catégories de produit sur Prestashop en utilisant les webservices. Nous verrons les champs qu'il est important de remplir ainsi que ceux qu'il faut supprimer.

Dans un précédent article, nous avions vu comment il était possible de créer un produit sur Prestashop grâce aux webservices. Aujourd'hui, nous allons aller un peu plus loin en créant des catégories.

Pré-requis

  • Un site sous Prestashop
  • Votre clé Prestashop WebService

Récupérer le schéma XML vide d'une catégorie

Dans un premier temps, nous allons récupérer le xml vide d'une catégorie. Nous n'aurons alors plus qu'à le remplir avec nos informations, puis de l'envoyer à notre serveur pour qu'il puisse l'enregistrer en base de donnée.

1) Se connecter à Prestashop

Voici le code pour se connecter à Prestashop par l'intérmediaire des Webservices:

define('DEBUG', true);
define('PS_SHOP_PATH', 'http://monprestashop.com');
define('PS_WS_AUTH_KEY', 'VOTRE CLE WEBSERVICE');
require_once('./PSWebServiceLibrary.php');

try {
    $webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);
}
catch (PrestaShopWebserviceException $ex) {
    // Shows a message related to the error
    echo 'Other error: <br />' . $ex->getMessage();
}

Vous devez être bien sûr d'avoir télécharger le fichier PSWebServiceLibrary.php et l'avoir placé dans le bon répertoire. Vous pouvez trouver le code de ce fichier sur ce lien.

2) Récupérer le XML vide

Continuons notre petit code, et récupérons le XML vide d'une catégorie:

$xml = $webService->get(array('url' => 'http://monprestashop.com/api/categories?schema=synopsis'));
$resources = $xml->product->children();

En utilisant schema-synopsis, on demande en plus à Prestashop de nous indiquer quels sont les champs obligatoires à remplir.

Il va ensuite être nécessaire de supprimer quelques champs. En effet, si l'on renvoie tout comme si de rien n'était, PrestaShop nous renverra une erreur en nous indiquant que nous n'avons pas le droit de toucher à certains champs:

unset($resources->level_depth);
unset($resources->nb_products_recursive);

II Remplir le XML

Maintenant que notre XML est prêt à l'emploi, nous allons commencer à le remplir. Commençons avec des champs simples, nous allons activer la catégorie sur notre site et lui donner l'ID d'un parent auquel celle-ci doit s'attacher.

Si vous ne connaissez pas du tout les IDs, rendez-vous dans l'admin de Prestashop, et regardez les IDs de vos catégories. Personnellement, je ne veux créer que des catégories qui sont des enfants de la catégorie Accueil, dont l'ID est 2:

$resources->active = true;
$resources->id_parent = 2;

Comme nous l'avions vu dans notre article sur la publication de produits, il est également nécessaire de remplir les champs de langue. En effet, si votre Prestashop comporte une configuration avec plusieurs langues, vous pouvez directement mettre les informations correspondant à chaque langue. Personnellement, je n'utilise qu'une langue, mais pour être sûr que mon script fonctionne partout, j'utilise une boucle for qui remplit tous les champs de langue:

for($i = 0;$i < count($resources->name->language);$i++){
    $resources->name->language[$i] = "Le nom de ma catégorie";
    $resources->link_rewrite->language[$i] = "url-de-ma-categorie";
}

III Envoyer le XML

Il ne nous reste plus qu'à envoyer notre catégorie à notre Prestashop pour qu'il puisse l'enregistrer dans la base et pour que vous puissiez l'utiliser avec vos produits:

$opt = array('resource' => 'categories');
$opt['postXml'] = $xml->asXML();
$xml = $webservice->add($opt);

La variable $xml déclarée à la fin contiendra la réponse générée par le serveur pendant l'enregistrement. Vous pouvez donc récupérer l'identifiant correspondant à votre nouvelle catégorie à partir de cette variable.