En un proyecto que acabamos realizar ( superoliva.es ) , el cliente tiene productos que su precios que son por KILO y se venden por gramos o kilos el producto.
La solucion ideal sería hacer un plugin para virtuemart que cambiara el importe del producto una vez selecciones una cantidad de gramos.
NOTA: Nos dimos cuenta que virtuemart no permite decimales en la entrada de un pedido, tiene que ser entero.
Nuestra solución para poder vender gramos de un producto.
La solucion mas sencilla , no la ideal, pero siempre nos aptamos al presupuesto, es utilizar el plugin de trae virtuemart de campos personalizados, creamos uno de tipo cadena , y una vez guardado lo configuramos para el precio del producto se recalcule -% .
Para configurar el plugin tipo cadena para utilice un porcentaje, se hace una vez guardado el campo personalizado.
Al editarlo en el campo multiply podemos utilizar : base_productprice o base_variantprice
Este ultimo es el que utilizamos.
Nosotros creamos un campo personalizado con titulo " Cantidad en gramos" donde ponemos que el modifique un % del precio
De esta forma , este producto , concretamente " Platanos de canarias " ya podemos comprar 100grs,200gr,500grs o 800grs
Si nos fijamos en la siguiente imagen, veremos que el texto que nos pone en selet es:
100grs X 0,22€
Pero realmente , el plugin por defecto pondría:
100grs -- 90%
Como podéis ver en la siguiente imagen 800gr. ese el texto real que pone el plugin.
A continuación dicamos como hicimos para cambiar le texto de las opciones del selecte del plugin de cadena de virtuemart.
Modificar texto de select de un campo personalizado.
Realizamo override de la sublayout customfields de virtuemart, creando en nuestra plantilla el fichero nuestraplantilla/html/com_virtuemart/sublayouts/customfields.php
Este fichero es el encargado de mostrar los campos personalizados de virtuemart, es secreto esta switch, donde analiza la cadena de texto que ponemos a la hora añadir variante en el producto, tenemos que escribirlo tal cual para que no falle, a continuación ponemos todas las variante que tenemos hasta ahora:
Valor | Texto | Nuestra explicación | |
---|---|---|---|
-90 | 100 grs | Negativo para reste el 90% del valor de un kilo. El texto original que apareceria sin override seria: " 100 grs --90%" | |
-80 | 200 grs | Negativo para reste el 90% del valor de un kilo | |
-75 | 250 grs | Negativo para reste el 75% del valor de un kilo | |
-70 | 300 grs | ||
-65 | 350 grs | ||
-50 | 500 grs | ||
-40 | 600 grs | ||
-30 | 700 grs | ||
-25 | 750 grs | ||
0 | 1 Kilo | No incrementamos nada, por eso ponemos 0. El texto original que apareceria es " 1 Kilo Sin cargo adicional" | |
20 | 1,2 Kilo | Ahora incrementamos un 20% el precio, ya que lleva 200grs mas de un kilo... El texto original que apareceria sin override seria: " 1,2 Kilo +20%" | |
50 | 1,5 Kilo | Ahora incrementamos un 50% el precio, ya que lleva 500grs mas de un kilo... | |
80 | 1,8 Kilo | ||
100 | 2 Kilos | Ahora incrementamos un 100% el precio, ya que lleva el doble valor precio. El texto original que apreceria sin override seria: "2 Kilos +100%" | |
150 | 2,5 Kilos | ||
200 | 3 Kilos | ||
300 | 4 Kilos | ||
550 | 6,5 Kilos | ||
600 | 7 Kilos | ||
700 | 8 Kilos | ||
1250 | 13,5 Kilos |
Estas son todas las opciones validas para ese plugin con este override para que muestre un texto formateado como queremos.
Ver codigo de override.
El codigo anterior es algo muy básico y puede ser mejorado muchísimo , pero bueno como idea creo que os vale.