Prestashop - Ajouter plusieurs produits au panier depuis une URL

Création d'une page qui permet d'ajouter au panier des produits passés en parametres

Version Prestashop:  1.5.x

  • Création de la page: precommande.php à la racine de Prestashop
 
<?php
require(dirname(__FILE__).'/config/config.inc.php');
Tools::displayFileAsDeprecated();

Tools::redirect('index.php?controller=precommande'.($_REQUEST ? '&'.http_build_query($_REQUEST, '', '&') : ''),  __PS_BASE_URI__null, 'HTTP/1.1 301 Moved ermanently');
?>
  • Création du FrontController PrecommandeController.php dans le repertoire controllers/front :
<?php
// precommande.php?products_ids=1,2&qts=1,2
class PrecommandeControllerCore extends FrontController
{
    public
$php_self = 'precommande';

   

/**
     * @see FrontController::initContent()
     */
   
public function initContent()
    {   
       
// Add cart if no cart found
       
if (!$this->context->cart->id)
        {
            if (
Context::getContext()->cookie->id_guest)
            {
               
$guest = new Guest(Context::getContext()->cookie->id_guest);
               
$this->context->cart->mobile_theme = $guest->mobile_theme;
            }
           
$this->context->cart->add();
            if (
$this->context->cart->id)
               
$this->context->cookie->id_cart = (int)$this->context->cart->id;
        }
       
// Get Id Cart       
       
$id_cart = $this->context->cookie->id_cart;               
       
$cart = new Cart($id_cart);    
       
$products_ids=$_GET['products_ids'];
       
$qts=$_GET['qts'];
       
$products_ids_array=explode(",",$products_ids);
       
$qts_array=explode(",",$qts);
       
$countParam = count($products_ids_array);
       
//Reset Cart
       
$products = $this->context->cart->getProducts();
        foreach (
$products as $product) {
         
$this->context->cart->deleteProduct($product["id_product"]);
        }
        if(
$countParam>0){   
            for(
$i = 0; $i < $countParam ;$i++){   
               
$cart->updateQty($qts_array[$i], $products_ids_array[$i]);               
            }       
        }
       
Tools::redirect('index.php?controller=order-opc');
    }
}
?>
  • Supprimer le fichier class_index.php qui se trouve dans le repertoire cache
  • Exemple d'utilisation: precommande.php?products_ids=1,2&qts=3,4

il ajoute au panier le product_id = 1 avec une quantité de 3 et le product_id = 2 avec une quantité de 4

Tags: 

Catégories: 

Share/Save