Jump to content

[Solucionado] Pack asociado a producto en product-list.tpl


OPS

Recommended Posts

Buenas a todos y gracias por vuetra ayuda.

 

Estoy tratando de implementar una oferta. La idea fundamental es que vamos a tener una relación de productos en oferta. La oferta consiste en que al comprar dicho producto al cliente se le da la opción de llevarse otro producto por tan solo un euro más.

 

Con un ejemplo se entenderá mejor. Imaginemos que tenemos dos productos que son:

 

lata de refresco 1,5€

Paquete de aceitunas 1,9€

 

La oferta consiste en que comprando la lata de refresco ofrecemos el paquete de aceitunas por solo 1€ más. El cliente se ahorra los 0.9 del paquete de aceitunas.

 

Para tratar de implementarla lo que he hecho es lo siguiente:

  1. Hemos creado los packs asociados a las ofertas, que incluyen los dos productos. en el ejemplo anterior el pack está formado por una lata de refresco y un paquete de aceitunas y el cliente abonará por el paquete 2,5 =1,5€+1€.
  2. En el product-list.tpl, cuando el cliente pulsa el botón de añadir a la cesta verificamos si el producto está en oferta y en tal caso le preguntamos si quiere el otro producto por tan solo un euro más.
  3. En caso de que el cliente diga que no quiere la oferta, añadimos el producto individual que ha seleccionado y nada más.
  4. En el caso de que el cliente responda que sí que quiere la oferta, entonces tenemos que añadir el pack formado por los dos productos.

Un producto nunca estará en dos packs distintos, por lo tanto, cada producto solo podrá estar asociado a un único pack.

Para identificar este pack en php es fácil

 

$sql = 'SELECT `id_product_pack` FROM `rs_pack` WHERE `id_product_item`=$product.id_product';

$Id_packs = Db::getinstance()->getValue($sql);

 

Una vez tenemos este dato solo tenemos que enviar a la cesta este pack y no el id de producto individual. Espero no haberos liado en exceso.

 

El problem está en que dado que estamos trabajando en un fichero tpl, concretamente el product-list-tpl no sé como implementar lo que acabo de describir. Es decir, no sé como hacer que el tpl pida a un fichero php el dato del id del pack y lo utilice en lugar del id de producto que utiliza en condiciones normales.

 

El efecto que tiene que producir para aquellos casos en que el producto está en oferta y el cliente la acepta es el cambio de esta línea

 

<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}"

href="{$link->getPageLink('cart.php')}?add&id_product={$product.id_product|intval}{if isset($static_token)}&token={$static_token} {/if}" title="{l s='Add to cart'}">{l s='Add to cart'} </a>

 

Por esta otra

 

<a class="button ajax_add_to_cart_button exclusive" rel="ajax_id_product_{$product.id_product|intval}"

href="{$link->getPageLink('cart.php')}?add&id_pack={$product.id_product|intval}{if isset($static_token)}&token={$static_token} {/if}" title="{l s='Add to cart'}">{l s='Add to cart'} </a>

 

En el fichero product-list.tpl

 

Si no se entiende bien lo explico denuevo mejor.

 

Muchas gracias de antemano.

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

Estimado nadie, muchas gracias por tu respuesta la cual me ha aclarado bastante por donde no debe seguir.

 

Viendo la complejidad del asunto he pensado cargar en algunos de los campos de la variable "$product" el id del pack que necesito, al menos para poder avanzar en este momento. Evidentemente utilizaremos algún campo de los que no vamos a necesitar, concretamente "supplier_reference".

 

Así cuando el usuario haga click en el botón "Añadir a la cesta" le aparecerá una ventana preguntándole si quiere la oferta. En caso de que el usuario responda que no se ejecutará la sentencia que viene por defecto en el fichero product-list.tpl, es decir,

 

rel="ajax_id_product_{$product.id_product|intval}"

 

en caso de que el usuario acepte la oferta cambiaremos esta línea por la siguiente:

 

rel="ajax_id_product_{$product.supplier_reference|intval}"

 

De esta forma se cargará en este segundo caso el pack y no el producto individual al carrito.

 

Esto lo he probado y funciona correctamente, lo único que me falla es el funcionamiento de "onclick" para que funcione como yo necesito pero para eso abriré otro hilo.

 

Lo dicho, muchas gracias.

Link to comment
Share on other sites

Estimado nadie, muchas gracias por tu respuesta la cual me ha aclarado bastante por donde no debe seguir.

 

Viendo la complejidad del asunto he pensado cargar en algunos de los campos de la variable "$product" el id del pack que necesito, al menos para poder avanzar en este momento. Evidentemente utilizaremos algún campo de los que no vamos a necesitar, concretamente "supplier_reference".

 

Así cuando el usuario haga click en el botón "Añadir a la cesta" le aparecerá una ventana preguntándole si quiere la oferta. En caso de que el usuario responda que no se ejecutará la sentencia que viene por defecto en el fichero product-list.tpl, es decir,

 

rel="ajax_id_product_{$product.id_product|intval}"

 

en caso de que el usuario acepte la oferta cambiaremos esta línea por la siguiente:

 

rel="ajax_id_product_{$product.supplier_reference|intval}"

 

De esta forma se cargará en este segundo caso el pack y no el producto individual al carrito.

 

Esto lo he probado y funciona correctamente, lo único que me falla es el funcionamiento de "onclick" para que funcione como yo necesito pero para eso abriré otro hilo.

 

Lo dicho, muchas gracias.

Oh, me alegro de que hayas conseguido ya, al menos la lógica del funcionamiento, intentare pasarme por tu otro hilo que tienes abierto.

 

Un Saludo!

Link to comment
Share on other sites

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