La adición de un producto (paquete) en el carrito programación en diferentes sitios web / tiendas
-
16-10-2019 - |
Pregunta
¿Cómo añadir un producto a la cesta es lo que ya he trabajo, pero parece estar funcionando sólo para el almacén predeterminado. Así que cuando agrego un producto a la cesta con la secuencia de comandos en el sitio web por defecto / tienda, los productos se añaden al carro, pero si lo hago en otra tienda, el carro permanece vacío (sin ningún error).
Aquí está el añadir a la cesta de la escritura que tengo hasta ahora:
require_once($_SERVER['DOCUMENT_ROOT'] . '/app/Mage.php');
umask(0);
Mage::app()->setCurrentStore(Mage::app()->getStore()->getStoreId());
$session = Mage::getSingleton('core/session', array('name'=>'frontend'));
$cart = Mage::helper('checkout/cart')->getCart();
if( $_REQUEST['params_1'] != '' ) {
try {
$params_1 = unserialize($_REQUEST['params_1']);
$productcart = new Mage_Catalog_Model_Product();
$productcart = $productcart->load($params_1['product']);
$cart->addProduct($productcart, $params_1);
$session->setLastAddedProductId($productcart->getId());
} catch(Exception $e) {
echo Mage::helper('catalog')->__($e->getMessage());
}
}
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);
$_REQUEST['params_1']
mantiene la configuración del producto paquete como una matriz, que parece correcta, ya que está trabajando en el almacén predeterminado.
¿Es necesario llamada $cart = Mage::helper('checkout/cart')->getCart();
diferente con el fin de reflejar otra tienda?
Solución 2
De acuerdo, no sé exactamente lo resuelto, pero he resuelto el problema mediante la adopción de estos dos pasos:
-
Yo estaba usando
jQuery.ajax()
para hacer una llamada AJAX a mi Magento ajaxController que maneja mi añadir a la cesta de la escritura. Eso fue un solo archivo .php, pero añade el código a mi módulo ajaxController. -
El parámetro url para la llamada AJAX era relativo, como en
url: "/myhelper/ajax/add_to_cart_final_ajax/"
, ahora me envuelvo los URIs con el getUrl función auxiliar (), así:url: "<?php echo $this->getUrl('myhelper/ajax/add_to_cart_final_ajax') ?>"
Gracias Fabian Blechschmidt por su ayuda y paciencia de todos modos!
Otros consejos
El carro es un represantetion de una cotización. Una cita está unido a una tienda, por lo que acaba de cambiar el ID de tienda podría no ser suficiente si el carro / presupuesto ya está conectado a la tienda equivocada.
Compruebe el StoreID de la compra / cita y cambiarlo, esto podría ayudar.