Advertisement
  1. Code
  2. OpenCart
Code

Filtrado de los métodos de pago por Peso de Articulos en OpenCart

by
Difficulty:IntermediateLength:ShortLanguages:

Spanish (Español) translation by Elías Nicolás (you can also view the original English article)

Como desarrollador, a menudo tendrá que enfrentar un escenario que le obliga a alterar el comportamiento básico de un framework. Si eso es algo que ya es proporcionado por la interfaz de usuario de administración o algo similar, ¡está bien para usar! Pero necesitarás más que eso en el caso de personalizaciones complejas—tendrás que modificar el código del framework.

Mientras lo hace, no desea modificar los archivos del framework directamente, ya que se considera un mal hábito, y también hace que la actualización del marco de trabajo sea una pesadilla si ha realizado muchos cambios en diferentes archivos. Así que hay que buscar diferentes enfoques posibles para lograrlo sin modificar el núcleo mismo. La mayoría de los framework proporcionan hoy en día algún tipo de sistema que le permite hacer eso como parte de la extensibilidad.

Hoy, vamos a discutir un escenario similar en el contexto de OpenCart. Si participa activamente en el desarrollo de OpenCart, probablemente sepa que puede filtrar los métodos de pago basándose en la cantidad mínima de pago del carrito. Por ejemplo, puede optar por no enumerar el método COD si el total de pago es inferior a una cantidad determinada. Está integrado y se puede configurar al configurar el método de pago desde el back-end.

En este tutorial, lo ampliaremos e intentaremos limitar los métodos de pago basados en el peso total del carro. Discutiremos cómo filtrar el método COD durante la comprobación si el peso del carro es menor que un determinado valor predefinido. Para lograr esta funcionalidad, se requiere cambios en el código, ya que no es algo configurable desde el propio back-end.

Como se mencionó anteriormente, no debe cambiar ningún archivo básico del framework, y eso nos deja con la opción de OCMOD. No te preocupes si no estás familiarizado con él, lo presentaré en la siguiente sección.

Supongo que estás usando la última versión de OpenCart, y a la fecha de que se escribio esto, es OpenCart 2.2.0.0. Además, el sistema OCMOD sólo funciona con OpenCart 2.x.x.x en adelante, por lo que le da otra razón para instalar la última versión.

Así que nos prepara las cosas bien para avanzar. ¡Vamonos!

¿Qué es OCMOD?

OCMOD es un sistema de búsqueda y reemplazo basado en XML que le permite alterar los archivos principales del framework OpenCart. Usted define el archivo XML según las convenciones de OCMOD, y hará el resto. Si has oído hablar del sistema vQmod en OpenCart 1.5.x, es un sucesor de ese sistema.

Vamos a enumerar algunos ejemplos para entender lo que es capaz de:

  • Insertar código antes de cualquier línea en particular en el archivo.
  • Reemplazar un bloque de código con el bloque de código personalizado.
  • Buscar una cadena en el archivo usando regex y reemplazarlo con otra cadena.
  • Modificar el esquema de la base de datos de OpenCart.
  • Mucho mas...

Aunque el siguiente par de secciones le ayudará a entender cómo funciona, también puede echar un vistazo a esta explicación en profundidad de OCMOD.

Si no está familiarizado con vQmod o OCMOD, le recomendaría que revise el artículo mencionado ya que este tutorial se desliza a través del uso de OCMOD.

Habiéndonos familiarizado con OCMOD, pasaremos a la siguiente sección que construye un módulo OCMOD para lograr la personalización mencionada anteriormente.

¿Cómo se ve sin OCMOD?

Echemos un vistazo al archivo que necesita ser cambiado en nuestro caso. Adelante, abra el archivo catalog/controller/checkout/payment_method.php en su editor de texto favorito y busque el fragmento siguiente en el método de index.

Recupera todos los métodos de pago activos de la base de datos. Siguiendo esa línea, podríamos insertar nuestro código para que filtre el método COD si el peso total del carro es menor que un determinado valor. Debería ser así si vamos a modificar este archivo directamente.

Como puede ver, nuestro código personalizado está envuelto por comentarios.

Primero, buscamos el peso total del carro usando el método getWeight del objeto Cart. Para mantener las cosas simples, hemos codificado el peso mínimo requerido para el método COD a 100. Por supuesto, usted podría hacer un módulo de configuración de back-end para que pueda configurarlo desde el propio administrador.

A continuación, hay una condición if que comprueba el peso total de la compra con el peso mínimo DQO, y se basa en que filtra el método DQO del array $results .

Así que, eso es lo que se refiere a la modificación del código. En la siguiente sección, lo lograremos utilizando OCMOD, ¡y eso es lo que te prometí al principio del artículo!

Crear e instalar el módulo OCMOD

Construir el módulo

Cree un archivo filter_payment_method.ocmod.xml con el siguiente contenido.

Como puede ver, la mayoría de las etiquetas son autoexplicativas. La etiqueta más importante es <file>, que define el nombre del archivo en el que se realizará la operación. La etiqueta <search> se utiliza para buscar el código que estamos buscando, y finalmente hemos utilizado la etiqueta <add> para inyectar nuestro código.

Instale el Módulo

Dirígete hacia el back-end y navega hasta Extensiones > Instalador de extensión. Haga clic en el botón de upload y seleccione el archivo que creamos en la sección anterior. Si todo va bien, debería ver un mensaje de éxito.

Vaya a Extensiones > Modificaciones, y debería ver la extensión OCMOD que aparece en esa página.

Modifications

¡Ha instalado la extensión correctamente!

Dirígete hacia el front-end y agrega un par de productos al carro para que el peso total del carro permanezca por debajo de 100. Ahora, comienza el flujo de salida y en la pestaña de métodos de pago debes notar que no hay COD disponible. Por supuesto, debería tener al menos un método de pago más habilitado, de lo contrario OpenCart se quejará de que no hay opciones de pago disponibles.

Así que, ¡eso es todo por hoy! De esta forma, puede seguir adelante y utilizar el sistema OCMOD para cualquier personalización que requiera que modifique los archivos principales.

Conclusion

En este artículo, hemos aprendido a utilizar el sistema OCMOD para filtrar los métodos de pago en la compra basados en el peso total del carro. Espero que lo hayas disfrutado y aprendido algo nuevo en OpenCart.

No te olvides de compartir tus pensamientos y consultas usando el feed de comentarios de abajo.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.