Quiero mostrar una ventana emergente cuando un producto se agrega por primera vez al carro en Magento y no quiero mostrar una ventana emergente si el producto se volvió a agregar o actualizar. En resumen, quiero saber qué producto se va a agregar en el carrito es Primera ocurrencia o no?¿Cómo verificar si un producto de Magento ya está agregado en el carro o no?
Respuesta
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
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!
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
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
Mi respuesta también fue downvoted –
- 1. Magento ¿Cómo verificar si el carrito de la compra está vacío o no?
- 2. Comprueba si un CALayer ya está agregado como una subcapa
- 3. Drupal/Ubercart Comprobar si un determinado producto está en el carro en la caja
- 4. Magento obtener un producto configurable a partir de un producto simple, incluso si el producto de configuración está deshabilitado
- 5. Magento: ¿Cómo verificar si el administrador está conectado dentro de un controlador de módulo?
- 6. Comprobación de si un producto Magento es un niño de un producto configurable
- 7. ¿Cómo verificar si una variable ya está declarada (T-SQL)?
- 8. Para verificar si un objeto está vacío o no
- 9. JavaScript - cómo comprobar si el evento ya se ha agregado
- 10. Cómo verificar si un DataGridViewCheckBoxCell está marcado
- 11. No válido porque no está incluido en una función de agregado o el grupo por cláusula
- 12. Compruebe si el archivo ya está abierto
- 13. ¿Cómo verificar programáticamente si el hotspot está habilitado o deshabilitado?
- 14. Determinar si el módulo Magento está habilitado
- 15. Determine si en la página del producto programáticamente en Magento
- 16. Categoría de producto Magento
- 17. ¿Cómo verificar si un objeto está definido?
- 18. Cómo verificar si un nombre eval no está definido
- 19. ¿Cómo verificar si ya existe un valor para evitar duplicados?
- 20. Magento - obtener el producto actual
- 21. Cómo verificar si un valor de matriz profunda está presente
- 22. ¿Cómo puedo verificar si un punto está debajo de una línea o no?
- 23. cómo verificar si un host está en su known_host ssh
- 24. ¿Cómo verificar si un archivo ya está abierto por otro proceso en C?
- 25. Incluir jQuery, si no está incluido ya
- 26. Magento producto plano
- 27. Cómo verificar el JavaScript del navegador está habilitado o no
- 28. iOS - ¿Cómo verificar si una NSOperation está en un NSOperationQueue?
- 29. cómo establecer el foco en un div usando javascript o jquery cuando # ya está agregado en url?
- 30. iPhone + en la compra de la aplicación + determinar si el producto se compró o no
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
han actualizado la respuesta para explicar esto –
Muchas gracias Drew Hunter ... Una solución perfecta para mí ... gracias por tu ayuda...:):) – Tamanna