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