Documentación técnica de Palisis Webshop Desktop

Blanca Castillo
Blanca Castillo
  • Actualización

¿Dónde lo encuentro?

Canales de venta> Webshop

1ffe28b0-afe9-4d52-abde-4aaa4f861871.png

 

¿Qué significa?

Actualmente, Palisis ofrece dos motores de reservas: “Widget” y “Desktop”. En este documento detallamos varios aspectos técnicos de "Webshop Desktop", entre ellos:

  • Cómo habilitar Google Analytics
  • Cómo activar funciones del motor Desktop mediante parámetros HTTP-GET
  • Cómo insertar un motor Desktop como IFRAME
  • Cómo gestionar una “cesta externa” al insertar un motor Desktop como IFRAME
  • Enlace a todas las opciones de configuración que ofrece una instancia Desktop

Aquí puede encontrar una lista de todas las opciones de configuración actuales de las instancias Desktop:

https://office.palisis.com/pit/v5/#/DesktopGlobal

Para ver las “opciones principales” de cada instancia, haga clic en el botón “Editar” y desplácese hacia abajo para visualizar todos los atributos:

ca20ea77-726c-41cb-8558-8e5a89b6ac78.png

b9f9f682-d48f-4c6e-8647-3c3e801ba3f1.png

 

Ventajas y desventajas de la solución “Desktop”

Motor de reservas “Desktop”, como solución con múltiples ofertas:

  • VENTAJA Motor de reservas con “múltiples ofertas”, incluida la cesta
  • VENTAJA Funciona como solución independiente (no se necesita un sitio web propio)
  • VENTAJA Muchas opciones de marca y diseño
  • VENTAJA Permite reservar artículos de transporte, paquetes y productos
  • VENTAJA Se puede insertar completamente dentro de un IFRAME
  • VENTAJA Se puede utilizar como solución de “solo checkout” al usar la API de Webshop
  • VENTAJA Totalmente integrado con Google Analytics
  • DESVENTAJA Si se utiliza como IFRAME o para “solo checkout”, requiere más trabajo de integración

 

Terminología general

  • “propietario de la tienda” … El propietario del sitio web que utiliza/inserta Palisis Webshop; el "Propietario" de Palisis
  • “comprador” … La persona que utiliza el sitio web del propietario de la tienda

 

¿Qué es una “instancia Desktop”?

Esta instancia de configuración contiene toda la información relacionada con esa instancia Desktop concreta, como qué oferta(s) están asignadas/vendidas, si las ofertas deben venderse con un horario o no, las opciones de diseño, etc. Se pueden crear tantas instancias Desktop como sean necesarias. Tenga en cuenta que hay dos conjuntos de opciones de configuración disponibles para una instancia Desktop: un conjunto global para una instancia concreta y otro para cada oferta asignada a esa instancia.

Cada instancia Desktop se identifica mediante un dominio único en todo el sistema (también denominado <shop domain>).

El dominio de la tienda se asigna automáticamente al crear una instancia Desktop.

 

Cómo activar funciones del motor Desktop mediante parámetros HTTP-GET

Todos los ejemplos utilizan el dominio de tienda webshop-api-test; asegúrese de sustituirlo por su propio dominio de tienda.

Forzar móvil

Nombre del parámetro GET valor/descripción
forcemobile true|false: si se proporciona true , fuerza el motor a utilizar su versión móvil

 

Ejemplo:

https://webshop-api-test.palisis.com/?forcemobile=true

 

Reservar directamente

Nombre del parámetro GET valor/descripción
book-direct offerId , que se puede encontrar en el Backoffice, en la pantalla de configuración de la instancia; si se proporciona, fuerza al motor a iniciar el proceso de reserva con la oferta indicada

 

Ejemplo:

https://webshop-api-test.palisis.com/?book-direct=r-1541

 

Oferta directa

Nombre del parámetro GET valor/descripción
offer-direct

offerId , que se puede encontrar en el Backoffice, en la pantalla de configuración de la instancia; si se proporciona, fuerza al motor a mostrar ÚNICAMENTE esta oferta en la pantalla de inicio del motor; si el mosaico de la oferta está contraído, se expandirá.

 

OPCIONALMENTE, es posible proporcionar una lista de offerIds separados por comas. Las ofertas proporcionadas se mantienen abiertas y el resto se cierran, de la siguiente manera:

 

offerId1,offerId2,offerIdN

 

Ejemplo:

https://webshop-test-offer-direct.palisis.com/?offer-direct=r-1541

Ejemplo separado por comas:

https://webshop-test-offer-direct.palisis.com/?offer-direct=r-1541,r-1561

 

Evento directo

Nombre del parámetro GET

valor/descripción

event-direct

yyyy-mm-ddThh:mm – preselecciona una salida (evento) concreta de una oferta (la fecha y la hora ya están seleccionadas) en el flujo de reserva. Siempre debe utilizarse junto con book-direct o offer-direct. La oferta debe estar configurada con Opción de fecha y hora = fecha y hora. El formato no debe incluir segundos ni zona horaria (por ejemplo, 2025-12-24T20:00). Si el valor proporcionado no existe para esa oferta, no se puede reservar o tiene un formato incorrecto, la tienda web volverá al flujo de reserva normal para que el comprador pueda elegir una fecha/hora disponible

Ejemplo (book-direct + event-direct):

 

Ejemplo (offer-direct + event-direct):

 

Idioma / Configuración regional

Nombre del parámetro GET valor/descripción
locale en|de|es|it|fr fuerza el motor a utilizar la configuración regional indicada; se utiliza un código de idioma de 2 caracteres

 

Ejemplo:

https://webshop-api-test.palisis.com/?locale=de

 

Forzar cesta

Nombre del parámetro GET valor/descripción
forcebasket true|false: si se proporciona true , fuerza al motor a activar todas las funciones relacionadas con la cesta que puedan estar desactivadas en la configuración de la instancia. Esto resulta útil cuando el motor se ejecuta como IFRAME con la cesta desactivada, pero la instancia se desea “reutilizar” en modo móvil con todas las funciones de la cesta.

Ejemplo:

https://webshop-api-test.palisis.com/?forcebasket=true

 

Cómo insertar un motor Desktop como IFRAME

Todos los ejemplos/casos de demostración utilizan el dominio de tienda webshop-api-test; asegúrese de sustituirlo por su propio dominio de tienda.

El punto principal que se aborda aquí es cómo la página que aloja el IFRAME del motor puede corregir su altura, ya que el motor Desktop no tiene una altura fija y cada paso del proceso de reserva puede generar una altura diferente.

 

Cómo corregir la altura variable del IFRAME del motor (nuevo método, introducido con Palisis 3.94)

El motor Palisis Desktop utiliza una herramienta de terceros llamada “iFrame Resizer”.

La herramienta está disponible en https://github.com/davidjbradshaw/iframe-resizer y, siguiendo sus instrucciones de “Getting started”, enlazamos y servimos el archivo JavaScript iframeResizer.contentWindow.min.js con cada instancia del motor Desktop. Este es el único requisito previo para utilizar esta herramienta con la página anfitriona (la página del cliente que inserta el IFRAME).

Siga las instrucciones de “Getting started” y siguientes en https://github.com/davidjbradshaw/iframe-resizer para configurar “iFrame Resizer” en la página que inserta el IFRAME.

NUEVA NOTA: con el nuevo diseño de Desktop, al utilizar esta biblioteca debe establecerse heightCalculationMethod con el valor ‘taggedElement’. Asimismo, deben evitarse los problemas entre dominios utilizando checkOrigin: false.

Código de ejemplo:

<iframe id="myIframe" src="https://mytestingshop.palisis.com/" style="width:100%; border:none"></iframe>

<script>

iFrameResize({checkOrigin:false, heightCalculationMethod: 'taggedElement'}, '#myIframe');

</script>

 

Reglas importantes de integración

  1. Vinculación selectiva del script (configuraciones mixtas):

    • Si un sitio web inserta versiones antiguas y nuevas de Webshop, no aplique globalmente el script iFrame Resizer (evite selectores genéricos como iframe o $('iframe')).

    • Vincule el script del redimensionador condicionalmente mediante atributos id específicos del iframe o clases CSS objetivo que correspondan estrictamente al iframe del Webshop antiguo (por ejemplo, #oldWebshopIframe o .legacy-webshop-iframe).

  2. Exclusiones del nuevo Webshop:

    • Asegúrese de que el script iFrame Resizer nunca se invoque ni se dirija al contenedor iframe que aloja el nuevo Webshop. El nuevo Webshop gestiona el tamaño de forma independiente y ejecutar iFrame Resizer sobre él puede provocar bucles de renderizado o problemas de diseño inesperados.

  3. Opciones de configuración necesarias (Webshop antiguo):

    • Establezca heightCalculationMethod: 'taggedElement'.

    • Establezca checkOrigin: false para evitar errores de comunicación entre dominios.

 

Ejemplos de implementación

1. Iframe único estándar (Webshop antiguo)

<iframe id="legacyWebshopIframe" src="`https://mytestingshop.palisis.com/`" style="width:100%; border:none;"></iframe>
<script src="`https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.9/js/iframeResizer.min.js`"></script>
<script>
  // Dirigir exclusivamente mediante un selector de ID específico
  iFrameResize({
    checkOrigin: false,
    heightCalculationMethod: 'taggedElement'
  }, '#legacyWebshopIframe');
</script>

 

2. Configuración mixta (coexistencia del Webshop antiguo y nuevo)

Cuando ambas versiones coexisten en la misma página o dentro de la misma aplicación:

<!-- Iframe del Webshop antiguo (requiere Resizer) -->
<iframe id="oldWebshopIframe" class="legacy-webshop" src="`https://oldshop.palisis.com/`" style="width:100%; border:none;"></iframe>
<!-- Iframe del nuevo Webshop (NO vincular Resizer) -->
<iframe id="newWebshopIframe" class="new-webshop" src="`https://newshop.palisis.com/`" style="width:100%; border:none;"></iframe>
<script src="`https://cdn.jsdelivr.net/npm/iframe-resizer@4.3.9/js/iframeResizer.min.js`"></script>
<script>
  // Correcto: vincular estrictamente al ID o la clase del iframe del Webshop antiguo
  iFrameResize({
    checkOrigin: false,
    heightCalculationMethod: 'taggedElement'
  }, '#oldWebshopIframe');
  // INCORRECTO - NO HACER ESTO:
  // iFrameResize({ checkOrigin: false }, 'iframe'); // ¡El selector amplio se dirige al nuevo Webshop!
</script>

 

Consulte aquí nuestro sencillo caso de demostración:

https://palisis-webshop-samples.palisis.com/simple-desktop-iframe.html

 

Otras observaciones al utilizar IFRAME

Tenga en cuenta que, al utilizar un IFRAME y dado que los motores de Palisis siempre fuerzan HTTPS, recomendamos encarecidamente que la página anfitriona (la página que inserta el IFRAME) utilice TAMBIÉN HTTPS.

Esto no solo mejora la experiencia del usuario, sino que también evita problemas de “dominio cruzado” al cargar el IFRAME. Algunas versiones de navegadores/sistemas operativos no cargarán el IFRAME cuando la página anfitriona y el origen del IFRAME no utilicen el mismo protocolo.

Esta corrección de la altura del IFRAME puede causar problemas en teléfonos móviles, especialmente con la combinación iOS/iPhone/Safari.

Tenga en cuenta que recomendamos encarecidamente NO utilizar IFRAME para versiones móviles.

El motor Desktop de Palisis ofrece una excelente visualización móvil y recomendamos llamar directamente al motor cuando el servidor/la página anfitriona detecte un dispositivo móvil.

Sin embargo, si desea seguir utilizando IFRAME en su versión móvil, tendrá menos problemas con Android que con la combinación mencionada anteriormente de iOS/iPhone/Safari.

Por ello, recomendamos añadir la siguiente corrección a la página anfitriona cuando detecte iOS/iPhone/Safari:

<script>
document.ontouchmove = function(e){
if($(e.touches[0].target).closest('.somecssclass').length > 0){
return true;
}
e.preventDefault();
};
</script>

Dado que ha añadido class=”somecssclass” a la etiqueta <body>.

 

Opción de instancia “Forzar configuración regional” y “Eliminar configuración regional del encabezado”

Permite forzar una instancia de tienda Desktop a utilizar una configuración regional determinada, proporcionada mediante su código regional de 2 letras, como “en” para inglés o “es” para español. También permite eliminar uno o varios botones de selección de configuración regional del encabezado de la interfaz de la tienda mediante una lista separada por comas de códigos regionales de 2 letras; por ejemplo, “es,it” eliminaría el español (es) y el italiano (it).

NOTA: la opción “Forzar configuración regional” no se puede utilizar cuando el motor está insertado como IFRAME

6bb321b0-4197-4f10-8bc8-9db44239b744.png

 

cc0d5ab1-606e-4870-ac5c-7b916196fc8a.png