¿Cómo funciona el precio dinámico en Magento?

8

Me pregunto cómo funcionan los precios dinámicos en Magento.

Por ejemplo, he creado un producto en el backend y le agrego algunas opciones personalizadas. Entonces, si el usuario elige la opción, el precio cambia automáticamente en la página de vista del producto sin volver a cargar la página.

¿Alguien puede explicar cómo Magento realiza esta acción?

¿Y podemos agregar precios dinámicos personalizados? Quiero que si el usuario hace clic en el enlace (agregué a la página de vista del producto), el cambio de precio.

Wakanina
fuente

Respuestas:

10

El cálculo de precios es un tema muy complejo en Magento. Aquí hay una vista panorámica de cómo se hace esto para un producto simple:

  1. Magento obtiene el precio "base". Este es el precio que ha definido en la columna de precios.
  2. Se aplica el precio "grupal". Esta es la parte en la que se tiene en cuenta el precio del nivel según la cantidad pedida, el sitio web y el grupo de clientes.
  3. El precio especial se aplica si se define un precio especial para la fecha actual.
  4. Se activa el evento " catalog_product_get_final_price ". Aquí es donde debe entrar el módulo personalizado que juega con el precio. Como ejemplo de trabajo, el módulo CatalogRule detecta este evento y cambia el precio según las reglas definidas del catálogo
  5. Se tienen en cuenta los precios de las opciones seleccionadas.

Dado que este proceso consume mucho tiempo, Magento crea un índice de precios y solo revisará lo anterior cuando reindexe. El índice de precios utiliza un montón de tablas que tienen información sobre el precio "final" (calculado usando los pasos anteriores) junto con cosas como precios mínimos / máximos para configuraciones y paquetes. Esta tabla tiene una entrada para cada combinación de sitio web / producto / grupo de clientes, por lo que el sistema solo tendrá que seleccionar la fila adecuada en función de los datos del cliente, haciendo que todo el proceso se ejecute en un tiempo decente.

En cuanto a la parte frontend, la forma en que el precio aumenta y disminuye dinámicamente, todo esto se hace en javascript que comienza con una matriz json con todos los "niveles de precios" y disminuirá / aumentará el precio según sus selecciones.

Paul Grigoruta
fuente
Gracias Paul por tu respuesta. El precio dinámico de Magento es un tema complicado :)
Wakanina
utilizando el evento "catalog_product_get_final_price" y setFinalPrice()cambie el precio en la página de vista del producto y otros pasos. Pero, ¿cómo puedo establecer el precio dinámico desde la página de lista de productos?
Shathish
1

Esto se hace con Javascript y Ajax, si estoy correcto, se encuentra en el archivo js / varien / configurable.js. Si desea cambiar el comportamiento de esto, puede utilizar la creación de prototipos para ampliar la función específica. No soy bueno con javascript, pero creo que este artículo de Stackoverflow explica los conceptos básicos para extender /programming/2686258/javascript-inheritance-extend-function

Sander Mangel
fuente
Gracias Sander, esto lo deja un poco claro :). ¿Alguien puede explicar más detalles? Esto será valioso para todos.
Wakanina