Jump to content

un único producto en el carrito


cuadrao

Recommended Posts

Buenas tardes, soy nuevo en el foro y me preguntaba si me podríais ayudar con una cuestión.

 

El tema es que, para mi tienda, necesito que en el carrito no pueda haber más de un producto (del cual sí que podría haber más de una unidad). Es decir, lo que quiero es que cada producto se compre de forma individual.

 

Por si acaso no me he explicado bien: si alguien quiere comprar 3 patitos de goma, 1 toalla y 2 gorros de ducha, tendrá que hacer tres gestiones distintas: por una parte comprar los 3 patitos, por otra la toalla y por último los 2 gorros de ducha.

 

Para solucionarlo he pensado dos opciones, pero no sé cómo llevar a cabo ninguna:

 

- Limitar el número de productos del carrito a 1

 

- Vaciar el carrito cada vez que se añade un nuevo producto

 

Para este caso se me ocurrió algo. En el archivo shopping-cart.tpl hay un bucle que se utiliza para mostrar el último producto añadido al carrito:

{foreach from=$products item=product}

{if $product.id_product == $lastProductAdded.id_product AND (!$product.id_product_attribute OR ($product.id_product_attribute == $lastProductAdded.id_product_attribute))}

[...]

{/if}

{/foreach}

 

Tal vez podía aprovecharlo para eliminar los productos anteriormente añadidos, de forma que en el carrito sólo quedase ese último:

{foreach from=$products item=product}

{if $product.id_product == $lastProductAdded.id_product AND (!$product.id_product_attribute OR ($product.id_product_attribute == $lastProductAdded.id_product_attribute))}

[...]

{else}

 

[eliminar producto]

{/if}

{/foreach}

 

Pero claro, no sé qué código tendría que poner en vez de [eliminar producto].

 

¿Alguien podría echarme una mano? Si se os ocurre alguna solución alternativa también me vale!

 

 

Muchas gracias por adelantado.

Edited by cuadrao (see edit history)
Link to comment
Share on other sites

Buenas tardes, soy nuevo en el foro y me preguntaba si me podríais ayudar con una cuestión.

 

El tema es que, para mi tienda, necesito que en el carrito no pueda haber más de un producto (del cual sí que podría haber más de una unidad). Es decir, lo que quiero es que cada producto se compre de forma individual.

 

Por si acaso no me he explicado bien: si alguien quiere comprar 3 patitos de goma, 1 toalla y 2 gorros de ducha, tendrá que hacer tres gestiones distintas: por una parte comprar los 3 patitos, por otra la toalla y por último los 2 gorros de ducha.

 

Para solucionarlo he pensado dos opciones, pero no sé cómo llevar a cabo ninguna:

 

- Limitar el número de productos del carrito a 1

 

- Vaciar el carrito cada vez que se añade un nuevo producto

 

Para este caso se me ocurrió algo. En el archivo shopping-cart.tpl hay un bucle que se utiliza para mostrar el último producto añadido al carrito:

 

 

Tal vez podía aprovecharlo para eliminar los productos anteriormente añadidos, de forma que en el carrito sólo quedase ese último:

 

 

Pero claro, no sé qué código tendría que poner en vez de [eliminar producto].

 

¿Alguien podría echarme una mano? Si se os ocurre alguna solución alternativa también me vale!

 

 

Muchas gracias por adelantado.

No seria mas correcto decir que si se añaden mas de 1 producto al carrito, salga un alert diciendo que no se pueden añadir mas productos?

Link to comment
Share on other sites

vaya, qué rapidez :) muchas gracias por tu respuesta

 

En principio mi idea para la página del carrito era quitar el enlace a "continuar compra", para dar a entender que cada producto se compra de forma individual (a los ojos del usuario no sería un carrito, sino una compra directa). Si el usuario no finalizase esa compra y siguiese navegando por la tienda, lo ideal sería que el carrito se descartase y no lo tuviera que vaciar el usuario manualmente

Link to comment
Share on other sites

Me respondo a mí mismo por si a alguien le es de utilidad. Al final lo resolví por la segunda vía, sustituyendo en el shopping-cart.tpl el bucle mencionado por éste otro:

 

{if isset($lastProductAdded) AND $lastProductAdded}

{foreach from=$products item=product}

{if $product.id_product != $lastProductAdded.id_product AND (!$product.id_product_attribute OR ($product.id_product_attribute != $lastProductAdded.id_product_attribute))}

<a id="eliminarProducto" style="display: none;" href="{$link->getPageLink('cart.php', true)}?delete&id_product={$product.id_product|intval}&ipa={$product.id_product_attribute|intval}&token={$token_cart}"> </a>

<script language="JavaScript">

document.getElementById("eliminarProducto").click();

</script>

{/if}

{/foreach}

{/if}

Link to comment
Share on other sites

Me respondo a mí mismo por si a alguien le es de utilidad. Al final lo resolví por la segunda vía, sustituyendo en el shopping-cart.tpl el bucle mencionado por éste otro:

Utilizar javascript como lo has utilizado, es un agujero de seguridad.

Link to comment
Share on other sites

 

Utilizar javascript como lo has utilizado, es un agujero de seguridad.

 

El enlace que he simulado pulsar es el mismo que contienen los iconos del cubo de basura, ¿crees que eso me podría dar problemas? ¿Podrías decirme en qué casos no debo utilizar JavaScript?

 

Gracias de nuevo!

Link to comment
Share on other sites

El enlace que he simulado pulsar es el mismo que contienen los iconos del cubo de basura, ¿crees que eso me podría dar problemas? ¿Podrías decirme en qué casos no debo utilizar JavaScript?

 

Gracias de nuevo!

Por ejemplo, si un usuario malintencionadamente, va y borra la instrucción que has puesto desde firebug en ese instante, en su equipo no se ejecutaría tal instrucción en ese momento. (Y en este caso se supone que se debe ejecutar siempre, tal como lo has puesto)

Link to comment
Share on other sites

  • 8 months later...
Guest
This topic is now closed to further replies.
×
×
  • Create New...