Jump to content

Ajouter une liste de produit au panier.


Myriss

Recommended Posts

Je suis en train de programmer la page qui va permettre de re-passer une commande déjà passée.

Le problème est que je n'arrive pas à ajouter une liste de produits au panier.

Quelqu'un pourrait-il m'aider ?

Faut-il créer un formulaire ?

Je vous donnerai les sources quand ce sera terminé.

Link to comment
Share on other sites

Bonjour, j'ai les mêmes recherches et je crois qu'on tourne en rond malheureusement.
Je n'ai pas les compétences pour t'aider et j'en suis navré.
D'autres ici l'ont mais bizarement cela n'interesse que très peu de monde?!

Le rêve, juste d'un p'tit bouton à droite de la ligne d'une commande passée afin de remettre dans le caddy les mêmes articles....
Max réveille toi!

Ce sujet revient souvent et en ce moment Zendik et autres ont la même recherche...
Si un membre de Presta passe par ce post, qui sait, la lumière....
Bonne journée

Link to comment
Share on other sites

Bonjour PShopExpert,

Bonjour,
rajouter un produit au panier c'est assez simple en passant par ajax :)


pourrais-tu nous mettre sur la voie, ne serait-ce que pour récuperer la liste de produit d'une commande x et les mettre dans le panier car cela semble simple pour toi qui maitrise mais pour nous, c'est le flou artistique...

D'avance merci de ton écoute et ton aide
Max
Link to comment
Share on other sites

Quand je dis simple, c'est au niveau de la programmation, il y a quand même du travail en développement. Ce n'est pas quelques lignes de code à modifier sinon ça serait déjà sur le forum :-S
Passer commande pour quelqu'un d'autre pose plusieurs problèmes dont les problèmes de sécurité liés au login etc. Là c'est déjà encore autre chose...

Link to comment
Share on other sites

Attention, je ne parlais pas de commander pour quelqu'un d'autre!!!

Exemple: je suis client, j'ai l'habitude de commander toujours les mêmes produits, je vais sur l'historique de mes commandes, et là par exemple sur la ligne d'une commande précise, j'ai un bouton, qui, lorsque je clique, me remplit mon panier des articles que j'avais acheté lors de la commande de référence....

Euh j'espère être clair mais j'en suis pas sûr!!!

Link to comment
Share on other sites

Oui un grand merci.

@ PShopExpert
Je suis pas loin du but.
Est-ce que tu pourrais juste me dire comment reproduire l'effet de cadre qui se déplace lorsqu'on ajoute un produit dans le panier ?
Sur la page que j'ai créé, je n'arrive pas à reproduire l'effet. Il me charge la page du panier.
Y a-t-il un ajax et/ou un css à include dans cette page ?

Link to comment
Share on other sites

Ben en fait, comme je l'ai dit hier, je bloque sur l'ajout au panier. Tout le reste est développé (la reprise d'une commande passée, le listing des produits) mais je n'arrive pas à ajouter tous les produits au panier. Il faudrait certainement que je passe par une boucle mais il va falloir d'abord que je regarde comment fonctionne le panier.

Désolé mais je crois que je n'aurais pas le temps de regarder avant dimanche soir.

Link to comment
Share on other sites

@PShopExpert

J'ai trouvé ce code à la fin du script panier.php

//if cart.php is called by ajax
if (Tools::getValue('ajax') == 'true')
   require_once(_PS_MODULE_DIR_.'/blockcart/blockcart-ajax.php');
else
{
   if (sizeof($errors))
   {
       require_once(dirname(__FILE__).'/header.php');
       $smarty->assign('errors', $errors);
       $smarty->display(_PS_THEME_DIR_.'errors.tpl');
       require_once(dirname(__FILE__).'/footer.php');
   }
   else
       Tools::redirect('order.php?'.(isset($idProduct) ? 'ipa='.intval($idProduct) : ''));
}



Je pense que c'est à cause de cela que je suis redirigé vers la page panier.

Comment faire pour déclarer la value ajax=true ?

Après ça, j'aurais réglé un problème et il ne me restera plus qu'à régler le dernier, ajouter tous les produits au panier.

Link to comment
Share on other sites

@PShopExpert

J'ai essayé d'ajouté &ajax=1 mais rien n'y fait.

Je pense plutôt que c'est parce que je n'ai pas inclus un javascript.
rel="ajax_id_product_{$product.id_product}" doit faire référence au script qui permet cet effet sur le panier.

Quel est le fichier à inclure ?

J'ai essayé de regarder pour la fiche produit et je ne vois pas ce qu'il y a de plus à ce que j'ai fait et pourtant chez moi ça ne fonctionne pas comme je le voudrais.

Help me please !

Link to comment
Share on other sites

Bonsoir,

Alors Myriss toujours en galère ou notre cher PShopExpert t'a répondu en PM afin de solutionner ton problème?
En tout cas, je me sens bien inutile sur ce coup là mais bon courage à toi ou à PShopExpert si d'aventure ce module devient une de ses priorités (Sourires)
Bonne fin de week-end

PS:
Ceux qui sont interessé, Votez chez PShopExpert ici
http://microvin.uservoice.com/pages/p_shop_expert_france

Dis PShopExpert, petit module, petite modif donc petit prix non? une idée?

Link to comment
Share on other sites

@ PShopExpert

Je crois que j'ai trouvé d'où vient mon problème :
En fait quand j'essai d'ajouter un produit au panier, je suis déjà dans un template chargé par ajax.
Je me demande si mon problème ne vient de la.

Est-il tout de même possible de procédé comme cela ou bien dois-je trouver une autre solution ?

Link to comment
Share on other sites

Effectivement il me manquait ces fichiers mais cela ne solutionne pas mon problème.
Ce que je n'arrive pas à comprendre, c'est pourquoi il ne me créé pas cette DIV lorsque je clique sur le lien :




J'ai observé le code source lors de l'ajout d'un produit dans le panier sur la home, et sur la page que j'ai créé ça ne le fait pas.

Voici ma source :

<?php

/* SSL Management */
$useSSL = true;

include(dirname(__FILE__).'/config/config.inc.php');
require_once(dirname(__FILE__).'/init.php');

if (!$cookie->isLogged())
   Tools::redirect('authentication.php?back=re-order.php');


/* CSS ans JS files calls */
$css_files = array(
   __PS_BASE_URI__.'css/thickbox.css' => 'screen',
   __PS_BASE_URI__.'css/jqzoom.css' => 'screen'
);

$js_files = array(
   __PS_BASE_URI__.'js/jquery/jquery.scrollto.js',
   __PS_BASE_URI__.'js/jquery/ifxtranfert.js',
   _MODULE_DIR_.'blockcart/ajax-cart.js',
   _THEME_JS_DIR_.'tools.js',
   _THEME_JS_DIR_.'re-order.js'
);

$errors = array();

Link to comment
Share on other sites

Suite du code ....

if (!$id_order = intval(Tools::getValue('id_order')) OR !Validate::isUnsignedId($id_order))
   $errors[] = Tools::displayError('order ID is required');
else
{
   $order = new Order($id_order);
   if (Validate::isLoadedObject($order) AND $order->id_customer == $cookie->id_customer)
   {
       $id_order_state = intval($order->getCurrentState());
       $carrier = new Carrier(intval($order->id_carrier), intval($order->id_lang));
       $addressInvoice = new Address(intval($order->id_address_invoice));
       $addressDelivery = new Address(intval($order->id_address_delivery));
       if ($order->total_discounts > 0)
           $smarty->assign('total_old', floatval($order->total_paid - $order->total_discounts));
       $products = $order->getProducts();
       $customizedDatas = Product::getAllCustomizedDatas(intval($order->id_cart));
       Product::addCustomizationPrice($products, $customizedDatas);

       $smarty->assign(array(
           'shop_name' => strval(Configuration::get('PS_SHOP_NAME')),
           'order' => $order,
           'return_allowed' => intval($order->isReturnable()),
           'currency' => new Currency($order->id_currency),
           'order_state' => intval($id_order_state),
           'invoiceAllowed' => intval(Configuration::get('PS_INVOICE')),
           'invoice' => (OrderState::invoiceAvailable(intval($id_order_state)) OR $order->invoice_number),
           'order_history' => $order->getHistory(intval($cookie->id_lang), false, true),
           'products' => $products,
           'discounts' => $order->getDiscounts(),
           'static_token' => Tools::getToken(false),
           'carrier' => $carrier,
           'address_invoice' => $addressInvoice,
           'invoiceState' => (Validate::isLoadedObject($addressInvoice) AND $addressInvoice->id_state) ? new State(intval($addressInvoice->id_state)) : false,
           'address_delivery' => $addressDelivery,
           'deliveryState' => (Validate::isLoadedObject($addressDelivery) AND $addressDelivery->id_state) ? new State(intval($addressDelivery->id_state)) : false,
           'messages' => Message::getMessagesByOrderId(intval($order->id), true),
           'CUSTOMIZE_FILE' => _CUSTOMIZE_FILE_,
           'CUSTOMIZE_TEXTFIELD' => _CUSTOMIZE_TEXTFIELD_,
           'customizedDatas' => $customizedDatas));
       if ($carrier->url AND $order->shipping_number)
           $smarty->assign('followup', str_replace('@', $order->shipping_number, $carrier->url));
   }
   else
   {
       $errors[] = Tools::displayError('cannot find this order');
   }
}

$smarty->assign('errors', $errors);
if (Tools::getValue('ajax') == 'true')
   $smarty->display(_PS_THEME_DIR_.'re-order-detail.tpl');
else
{
   include(dirname(__FILE__).'/header.php');
   $smarty->display(_PS_THEME_DIR_.'re-order-detail.tpl');
   include(dirname(__FILE__).'/footer.php');
}

?>



Y a-t-il quelque chose que j'ai oublié ou bien quelque chose ne va pas ?

Link to comment
Share on other sites

En ce qui concerne le changement de la classe, ça ne fonctionne pas non plus.

J'ai essayé d'affiché la page seule (sans être chargée par l'ajax) : http://www.melis.fr/re-order-detail.php?id_order=1

Ensuite, en cliquant sur le bouton ajouter au panier, j'ai eu l'erreur suivante :
[break on this error] elementToTransfert.TransferTo({
elementToTransfert is null

Link to comment
Share on other sites

Bonsoir,
Oulalala Myriss, PShopExpert sur son site t'a redonné la lourde tache du developpement du module!!!
Attention le monde te regarde...Je plaisante....
J'ai les boules de me sentir impuissant, j'aimerai t'aider or apparement seul notre grand developpeur PShopExpert est en mesure de le faire...
Je te souhaite bon courage, sincérement, car ce mod, nous sommes plusieurs à l'attendre et en avoir besoin...
Tiens-nous au courant de tes avancées, aussi infimes soient-elles, et n'oublie pas que si on peut t'aider à tester ou autres.....
A++
Max

Link to comment
Share on other sites

Je crois avoir trouvé une explication pour mon problème d'ajout de produit dans le panier via AJAX.

En fait j'ai fait un test simple en dupliquant la page produit. Rien qu'en faisant cela le script d'ajout en ajax ne fonctionne plus.

Je pense donc qu'il doit y avoir quelque part un check pour savoir sur quelle page on se trouve. Quelqu'un en saurait il un peu plus la-dessus ?

J'avance et je crois que c'est cette partie du code qui est concernée (ajax-cart.js) :

//for product page 'add' button...
       $('body#product p#add_to_cart input').unbind('click').click(function(){
           ajaxCart.add( $('#product_page_product_id').val(), $('#idCombination').val(), true, null, $('#quantity_wanted').val(), null, true);
           return false;
       });

Link to comment
Share on other sites

J'ai trouvé le problème, lorsqu'on veut ajouter un produit dans le panier avec l'ajax-cart.js il ne faut pas oublié d'affecter une class ajax_block_product au block contenant le produit et le bouton ajouter au panier.

Link to comment
Share on other sites

Hello c'est quasi terminé en ce qui concerne la reprise d'une commande.

J'ai un dernier petit soucis, comment lance-t-on un refresh du panier ?

ajaxCart.updateCart(); ne fonctionne pas. Il me dit jsonData is not defined.

Quelqu'un aurait-il une idée ?

Link to comment
Share on other sites

Non, la dernière version n'est pas en ligne.

Je n'ai pas pris le temps de monter les fichiers.

En fait voici le problème :
Comment lance-t-on un refresh du panier ?
ajaxCart.updateCart(jsonData); ne fonctionne pas. Il me dit jsonData is not defined. Je ne sais pas quoi transmettre à la place.

J'ai réussi à créer un script javascript qui envoi les produit dans le panier mais je n'arrive pas à rafraichir le panier après ça.

Link to comment
Share on other sites

  • 3 months later...
  • 1 month later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...