Skip to main content

GTM — Sign Up Fake Product PDP (Customer Logged)

Versión simplificada del script Sign Up Fake Product PDP (Guest) para usuarios que ya tienen sesión iniciada. Como Hawkers ya dispone del email del usuario, no es necesario ningún formulario: al hacer clic en el botón fake, tras 1000ms aparece directamente un mensaje de confirmación.

Sin formulario, sin API, sin evento GTM

Esta variante no hace ninguna petición XHR, no valida campos y no empuja ningún evento al dataLayer. El objetivo es únicamente mostrar un mensaje de confirmación al usuario.


Variables GTM

Variable GTMDescripción
{{fake-product-button-let-me-know}}Texto del botón fake que reemplaza al "Add to Cart".
{{fake-product-message-success-logged}}Mensaje de confirmación mostrado tras el clic.

Elementos que se eliminan del DOM

Idéntico al comportamiento de la variante guest:

SelectorQué es
.js-button-add-to-cartBotón original "Add to Cart" — eliminado del DOM.
.js-arrival-date-messageMensaje de fecha estimada de llegada — eliminado del DOM.

Flujo de interacción

[Botón fake] → click → is-loading (1000ms) → panel has-success visible

No hay segundo paso: el panel de respuesta aparece directamente, sin formulario.


Estados del componente

ClaseElementoCuándo se aplicaEfecto
is-loading.gtm-html-fake-button-add-to-cartAl hacer clic (durante 1000ms)cursor: not-allowed, oculta texto, muestra spinner.
has-success.gtm-html-fake-button-responseTras los 1000msdisplay: block — panel de confirmación visible.

Clases CSS

ClaseElementoDescripción
gtm-html-fake-button-parentPadre del botón originalflex-wrap: wrap — permite apilar botón + panel.
gtm-html-fake-button-add-to-cartbutton fakeFondo gris #969696, ancho 100%, negro al hover.
gtm-html-fake-button-add-to-cart__textspanTexto del botón; se oculta con is-loading.
gtm-html-button-loadersvg spinnerVisible solo con is-loading en el botón.
gtm-html-fake-button-responsediv panelOculto por defecto; display: block con has-success. border: 1px solid #969696, text-align: center, font-size: 14px.

Diferencias respecto a la variante Guest

AspectoGuestLogged
FormularioSí — email + checkbox legalNo
Llamada a la APISí — XHR POSTNo
Evento GTMsign_up con hashedEmailNo
Delay al abrir el panel500ms1000ms
Clase del panelis-opened en gtm-html-fake-button-contenthas-success en gtm-html-fake-button-response
Variables GTM92
Estados posiblesis-loading, is-opened, is-loading (form), has-error, has-successis-loading, has-success

Flujo de ejecución

fnGtmSignUpFakeProductInit() ← llamada directa al cargar el tag

├─ fnGtmSignUpFakeProductToPreInitElements()
│ ├─ Busca .js-button-add-to-cart → lo elimina del DOM
│ ├─ Guarda su parentElement como addToCartButtonParent
│ ├─ Añade gtm-html-fake-button-parent al parentElement
│ └─ Busca .js-arrival-date-message → lo elimina del DOM

├─ fnGtmSignUpFakeProductToInjectCode()
│ ├─ Crea button.gtm-html-fake-button-add-to-cart con texto + spinner
│ ├─ Crea div.gtm-html-fake-button-response con <p>{{fake-product-message-success-logged}}</p>
│ └─ Appenda ambos al addToCartButtonParent

├─ fnGtmSignUpFakeProductToInitElements()
│ └─ Referencia el botón fake y el panel de respuesta

└─ fnGtmSignUpFakeProductToListenEvents()
└─ Botón fake → click:
├─ Añade is-loading al botón (cursor: not-allowed, spinner visible)
└─ setTimeout(1000ms):
├─ Añade has-success al panel (mensaje visible)
└─ Quita is-loading del botón