Prestashop : Ajouter un cart (un panier) et y ajouter des produits à l'intérieur

Signaler
Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
13 mai 2013
-
 jev26 -
Salut tout le monde,

Bon je ne suis pas vraiment familier avec la POO et encore moins avec le modèle MVC (mai j'ai acquis les bases dans ces deux domaines), aussi, je me suis lancé un défi de taille en essayant d'aborder Prestashop et ses nombreuses fonctionnalités.

J'essaie de créer un outil de personnalisation de différents objets dans le cadre d'un nouveau projet et de le lier à ma boutique Prestashop.

J'ai donc commencé à créer cet outil : hmastery.com/greativity/test
(Bon c'est pas fini il faut de l'ajax, des transitions entre les actions, mais en gros vous avez le concept sous les yeux).

Ce que je désire réaliser avec Prestashop et ce produit c'est quelque chose de simple. Je veux qu'une fois que je clic sur le bouton enregistrer en haut à droite de mon outil, je stocke dans la bdd le produit personnalisé. Ensuite, je l'ajoute dans le panier Prestashop de mon utilisateur.

Je me suis donc penché sur plusieurs méthodes de la class Cart.php de Prestashop. Je rencontre un premier problème lorsque je désire initialiser un nouveau cart. En utilisant le code qui suis je ne parviens qu'à générer encore et encore de nouveaux cart, sans que ma condition n'ait d'effet.


$cart_id = $this->context->cart->id;
/* Create a cart if there's no existing one yet */

if (empty($cart_id)){
$this->context->cart->add();
}


Une fois que j'ai créé mon cart (panier en Français) je ne peux pas y ajouter de produit à l'intérieur, j'ai pourtant lu de fond en comble la class Cart.php impossible de trouver la méthode adéquate !!!

En parallèle de ça, j'essaie de stocker la personnalisation de l'objet comme une customization classique de prestashop en utilisant la class Customization.php je n'arrive cependant pas à comprendre comment on peut générer le champ value de la table customized_data. Car la méthode suivante est employée dans Customization.php :


public function _addCustomization($id_product, $id_product_attribute, $index, $type, $field, $quantity, $customization_value)



Et on y retrouve ces quelques lignes :


$query = 'INSERT INTO `'._DB_PREFIX_.'customized_data` (`id_customization`, `type`, `index`, `value`)
VALUES ('.(int)$id_customization.', '.(int)$type.', '.(int)$index.', \''.pSql($field).'\')';



Or je ne sais absolument pas d'où provient :

pSql($field)



Donc voilà, là j'en suis au stade où je roule ma tête sur mon clavier en espérant qu'une force supérieure me vienne en aide. Et je crois déceler en cette communauté ladite force supérieure ^^ !!

Donc à tous les fanas de Prestashop (bon ok à ceux qui ont déjà eu à monter une boutique e-commerce avec une solution open-source mainstream), pourriez-vous éclaircir les points évoqués un peu plus haut ????


/thanks you're awesome !

/kiss bisous et merci !!!

2 réponses

Messages postés
132
Date d'inscription
mercredi 15 avril 2009
Statut
Membre
Dernière intervention
13 mai 2013
1
Bon j'ai réglé le problème du cart_id déjà :) :)

Il fallait tout simplement utiliser les cookies, voici ma solution pour initier un nouveau cart si aucun n'existe pour l'utilisateur (sans que cela n'en réinitie un à chaque refresh) :


if(isset($_COOKIE[$this->context->cookie->getName()]) && $this->context->cookie->id_cart == null && $this->context->cart->id == null)
{
$this->context->cart->add();
$this->context->cookie->__set("id_cart", $this->context->cart->id);
}




Bonne journée à tous =)
Salut ! J'ai le même soucis que toi, comment lier l'image personnalisé à la commande ? si quelqu'un à une solution je suis preneur.