2012-07-26 21 views

Respuesta

15

La respuesta depende en gran medida de cómo desee tratar los productos de tipo padre/hijo (si es necesario).

Si sólo se trata sólo con productos simples o tiene productos padre/tipo infantil y necesita probar para la identificación del niño a continuación:

$productId = 1; 
$quote = Mage::getSingleton('checkout/session')->getQuote(); 
if (! $quote->hasProductId($productId)) { 
    // Product is not in the shopping cart so 
    // go head and show the popup. 
} 

Alternativamente, si se trata de padres/productos de tipo infantil y sólo desea comprobar la ID de padre a continuación:

$productId = 1; 
$quote = Mage::getSingleton('checkout/session')->getQuote(); 

$foundInCart = false; 
foreach($quote->getAllVisibleItems() as $item) { 
    if ($item->getData('product_id') == $productId) { 
     $foundInCart = true; 
     break; 
    } 
} 

EDITAR

la pregunta era preguntó en un comentario por qué establecer un valor de registro en controller_action_predispatch_checkout_cart_add no está disponible para recuperarlo en cart.phtml.

El valor de registro esencialmente solo está disponible a lo largo de la vida de una sola solicitud; está publicando para pagar/comprar/agregar y luego ser redirigido a pagar/carro/índice, por lo que se pierden los valores de registro.

Si desea que persista un valor a través de estos a continuación, puede utilizar la sesión en su lugar:

En su observador:

Mage::getSingleton('core/session')->setData('your_var', 'your_value'); 

para recuperar el valor

$yourVar = Mage::getSingleton('core/session')->getData('your_var', true); 

La verdadera bandera que se pasa a getData eliminará el valor de la sess ion para ti

+0

Utilicé "controller_action_predispatch_checkout_cart_add" para obtener el ID del producto antes de agregarlo al carrito ... utilicé la variable de registro para obtener el ID del producto en la página phtml del carrito ... y preparé una función para la verificación de condición como mencionas. .pero ahora no puedo obtener productid en la página del carrito con registro ... por favor ayúdenme para esto ... – Tamanna

+0

han actualizado la respuesta para explicar esto –

+0

Muchas gracias Drew Hunter ... Una solución perfecta para mí ... gracias por tu ayuda...:):) – Tamanna

0

En cheque de la orden si el producto ya está en el carrito o no, sólo tiene que utilizar el siguiente código:

$productId = $_product->getId(); //or however you want to get product id 
$quote = Mage::getSingleton('checkout/session')->getQuote(); 
$items = $quote->getAllVisibleItems(); 
$isProductInCart = false; 
foreach($items as $_item) { 
    if($_item->getProductId() == $productId){ 
     $isProductInCart = true; 
     break; 
    } 
} 
var_dump($isProductInCart); 

Espero que esto ayude!

+1

Gracias por su respuesta ... fue la solución perfecta. Usé esta lógica en el observador, ahora mi problema es cómo obtener el valor de $ isProductInCart en la página del carrito, ya que quiero que este valor muestre una ventana emergente en la página del carrito. valor variable en un archivo phtml ... – Tamanna

+0

Puede simplemente resumir el código anterior dentro de alguna función con ID de producto como argumento de función y puede llamarlo desde cualquier lugar. – MagePsycho

+0

Mi respuesta también fue downvoted –

Cuestiones relacionadas