Personalizar la tarjeta en el listado de resultados del selector

Una de las personalizaciones más demandadas es la personalización de la tarjeta en el listado de productos que se obtiene como resultado de la búsqueda en el selector principal situado en la home page.

Desde Apariencia > Personalizar > Mybooking reservation engine > Tarjeta de producto se pueden seleccionar diferentes tipos de tarjeta, sin embargo no siempre se encuentra una tarjeta que se adapte bien a las necesidades de cada tipo de negocio.

Cuando sucede esto lo que podemos hacer es sobreescribir esta parte de la plantilla.

1 - Explicación teórica de la estructura y funcionamiento.

2 - Ejemplo practico de la personalización de una tarjeta y enlace al repositorio con el proyecto.


Estructura y funcionamiento

Para hacerlo debemos tener instalado un child theme que tenga a Mybooking Theme como padre. Puedes consultar este árticulo para ver como instalarlo fácilmente a partir del código en el repositorio de Mybooking con Mybooking Child.

Una vez instalado podemos seguir los siguientes pasos:

1 - Copiar la plantilla del plugin que se adapte más a nuestras necesidades. En este momento tenemos cuatro en producción:

  • mybooking-plugin-reservation-product-card-grid-tmpl.php (Grid 3 productos por fila)
  • mybooking-plugin-reservation-product-card-list-tmpl-php (Grid 1 producto por fila)
  • mybooking-plugin-reservation-product-card-reduce-list-tmpl.php (Grid un producto por fila en formato reducido - la imagen y altura de la tarjeta es menor que la anterior)
  • mybooking-plugin-reservation-product-card-list-multiple-rate-type-tmpl (solo para negocios con multiples tarifas - este no es seleccionable y se muestra por defecto cuando se configuran varias tarifas desde el programa de gestión - hasta 3 tarifas)

2 - Añadirla en la carpeta mybooking-templates. Para hacer esto tenemos que abrir la carpeta que contiene nuestro child theme en Wordpress desde app > public > wp-content > mybooking-child-master.

3 - Modificar el HTML teniendo en cuenta que es una plantilla con unos parámetros dinámicos que serán sustituidos por los datos procedentes del API como respuesta a la búsqueda realizada en la página precedente (donde se haya el selector).

Por ejemplo, en el código:

<% if (product.highlight_message && product.highlight_message != '') { %>
   <div class="mybooking-product_custom-message">
      <%=product.highlight_message%>
   </div>
<% } %>

<%=product.highlight_message%> será sustituido por el parámetro highlight_message procedente de la respuesta del API de Mybooking. Este parámetro contiene el mensaje destacado de la tarjeta definido desde el programa de gestión dentro de la ficha de cada producto.

Algunos de los parámetros descritos en la documentación del API

Si decidimos mover este mensaje a cualquier otra parte de la tarjeta veremos que lo muestra en el lugar donde lo hemos colocado. Obviamente deberemos añadir el CSS necesario para que se muestre correctamente.

De igual manera podemos mover cada uno de los elementos según lo necesitemos, eliminarlos, añadir otros o crear una tarjeta ex novo añadiendo estos parámetros donde nos convenga.

Si se crea desde cero sera necesario prestar especial atención en crear todas los estados que se pueden verificar, como por ejemplo que el producto no este disponible para ser alquilado, que no llegue algún atributo debido a que aún no se ha completado en la ficha del producto u otras situaciones con la finalidad de que no se produzcan errores.

Puedes consultar todos los parámetros disponibles en la documentación de la API.

También puedes visualizar los parámetros directamente en el panel de desarrollo del navegador en el panel de red y en la respuesta de la llamada API.

Ejemplo practico de la personalización de una tarjeta

Vamos a crear una tarjeta personalizada siguiendo el siguiente diseño.



Para hacerlo vamos a seguir los siguientes pasos:

1 - Analizar los datos que hay que presentar en la tarjeta según el diseño proporcionado, obtener los parámetros que se tienen que mostrar disponibles en la documentación del API y analizar los estados que puede tener la tarjeta.

2 - Añadir un fichero con el mismo nombre del fichero que se va a sobrescribir.

3 - Crear la estructura HTML dentro del fichero y añadir los parámetros de la plantilla que serán sustituidos dinámicamente por el Engine del Motor de reservas de Mybooking.

4 - Añadir los estilos CSS personalizados.

5 - Verificar que se visualiza correctamente y se puede realizar la reserva.

Analizar los datos y los estados

Para maquetar esta tarjeta necesitamos los parámetros destacados en negrita en la tabla. Entre ellos están los valores visibles en la tarjeta y también valores que sirven para crear los condicionales necesarios a mostrar u ocultar en el código avisos, botones etc.

Parámetro en product y plantilla Descripción
name Nombre del producto
short_description Descripción corta
description Descripción larga
highlight_message Mensaje destacado
photos Fotos del producto (imágenes para mostrar un slide)
photo Path de la foto (tamaño medio)
full_photo Path de la foto (tamaño completo)
exceeds_max Excede la duración máximo de reserva
be_less_than_min Inferior a la duración mínima de reserva
days Días de facturación
hours Horas de facturación
minutes Minutos de facturación
price_units Unidad de tiempo : "days" (días) "hours" (horas)
unit_base_price Precio sin descuento de 1 unidad 1 día/hora
unit_base_price_without_taxes Precio sin descuento de 1 unidad 1 día/hora sin impuestos
unit_price Precio con descuento (código de promoción u oferta) de 1 unidad 1 día/hora
unit_price_without_taxes Precio con descuento (código de promoción u oferta) de 1 unidad 1 d/h sin impuestos
vat_type Porcentaje de impuestos
base_price Precio sin descuento de 1 unidad todos los días/horas
price Precio incluyendo descuento (código de promoción u oferta) de 1 unid. todos los d/h
deposit Fianza por 1 unidad todos los días/horas
availability Disponibilidad
available Número de vehículos disponibles
offer_discount_type Tipo de la oferta(“percentage” o “amount”)
offer_value Valor de la oferta
offer_name Nombre de la oferta
offer_conditions Condiciones de la oferta
min_days Número mínimo de días para alquiler
payment_availability Se permite el pago online
category_supplement_1_cost Suplemento de categoría 1 (combustible)
category_supplement_2_cost Suplemento de categoría 2
category_supplement_2_cost Suplemento de categoría 3
key_characteristics Características clave : Conjunto de atributos y valor
few_available_units Aviso últimas unidades

Además en la tarjeta se tendrán que añadir las siguientes condiciones (en la tabla no incluyo los condicionales para verificar la existencia de cada parámetro que se dan por entendidos)

Estado Parámetro o condición Descripción
Aviso de duración mínima (tarjeta) be_less_than_min Si no se supera la duración mínima no se mostrará el botón para el alquiler sino un aviso en su lugar.
Aviso de duración máxima (tarjeta) exceeds_max Si se supera la duración máxima no se mostrará el botón para el alquiler sino un aviso en su lugar.
Aviso de disponibilidad (tarjeta) availability Si no hay disponibilidad de alquiler no se mostrará el botón para el alquiler sino un aviso en su lugar.
Aviso que informa de que no se han encontrado elementos en la búsqueda (listado) products.length === 0 Si no se encuentran productos se mostrará un aviso en lugar del listado.

También podemos utilizar la configuración del negocio cuyos parámetros podemos encontrar en la misma llamada en la propiedad settings para personalizar los datos ulteriormente, ejemplos:

Parámetro en settings Parámetro en plantilla Descripción
hide_price_if_zero hidePriceIfZero Oculta el precio si es cero
hide_price_if_not_available hidePriceIfNotAvailable Oculta el precio si no esta disponible el producto.

Añadir un fichero con el mismo nombre del fichero que se va a sobrescribir.

Después de este análisis preliminar podemos seguir añadiendo un fichero que sobrescriba una de las tarjetas definidas en el plugin. En esto caso la que se parece más a nuestro diseño es:

  • mybooking-plugin-reservation-product-card-reduce-list-tmpl.php

Podemos abrir el fichero del plugin con este nombre en nuestro editor y analizarlo usándolo como ejemplo para nuestra tarjeta personalizada.

Para que se muestre es importante mantener el id del script original. El Engine lo encontrará y lo incorporará en la página en el lugar establecido.

Crear la estructura HTML dentro del fichero y añadir los parámetros de la plantilla

Al interior de este script podemos añadir la estructura de nuestra tarjeta.

Recuerda seleccionar en la personalización del plugin en Wordpress la tarjeta que estas sobrescribiendo. De esta manera podrás ver en la web la tarjeta que estas editando.

Añadir los estilos CSS personalizados

En paralelo puedes ir añadiendo el CSS personalizado en el fichero styles.css de la root principal en el child theme y viendose reflejados estos estilos en la página o añadirlos tras construir la estructura HTML.


Verificar que se visualiza correctamente y se puede realizar la reserva

Una vez concluida la maquetación de la tarjeta es conveniente realizar un testeo con las diferentes variaciones que se pueden verificar en la tarjeta asegurandose además que se puede realizar la reserva (dentro de las condiciones establecidas en el programa gestor) abriéndose la página de checkout correspondiente al producto seleccionado.

Para finalizar puedes descargar el proyecto desde este repositorio de Github.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.

Still need help? Contact Us Contact Us