Pop-up de Newsletter

Como adicionar e gerenciar o componente Pop-up de Newsletter na sua loja.

O componente Pop-up de Newsletter é um recurso para inscrição de clientes para uma newsletter da loja. Com esse componente o cliente se inscreve para uma lista de contatos para receber informações e novidades da loja. Esse componente permite que o lojista configure como os contatos recebidos podem ser utilizados, como integrações com sistemas externos, para o envio de e-mails.

📘

Demonstração do componente

Visualize como é o componente acessando o Pop-up de Newsletter Demo. Recomendamos utilizar a versão mais atualizada do componente: (v6).

Implementação

Para habilitar o Pop-up de Newsletter você deve importar os arquivos JavaScript e CSS do componente no projeto. Como é um componente nativo, é possível que esses arquivos já estejam no seu template, pois é preciso incluí-los uma única vez. Confira a seguir todos os passos para habilitar e inserir o componente em uma página.

  1. Abra os arquivos do template da loja;
  2. Acesse liquids > partials > common >_popup_newsletter.liquid;
  3. Verifique se o arquivo contem códigos a seguir:
{% load_banners position: 'newsletter-popup' limit: 1 %}

{% for banner in loaded_banners %}
  {% assign image_url = '' %}
  {% assign upper_title = '' %}
  {% assign title = 'Cadastre-se em nossa newsletter' %}
  {% assign description = '' %}
  {% assign secondary_description = '' %}
  {% assign success_title = 'Obrigado!' %}
  {% assign success_subtitle = '' %}
  {% assign success_description = '' %}
  {% assign coupon = '' %}

  {% if banner.description contains '</p>' %}
    {% assign configs = banner.description | split: '</p>' %}
    
    {% for config in configs %}
      {% assign value = config | strip_html | split: ':' %}
      {% if config contains 'titulo_superior' and value[1] %}
        {% assign upper_title = value[1] | strip %}
      {% elsif config contains 'form_titulo' and value[1] %}
        {% assign title = value[1] | strip %}
      {% elsif config contains 'form_descricao' and value[1] %}
        {% assign description = value[1] | strip %}
      {% elsif config contains 'form_secundaria_descricao' and value[1] %}
        {% assign secondary_description = value[1] | strip %}
      {% elsif config contains 'sucesso_titulo' and value[1] %}
        {% assign success_title = value[1] | strip %}
      {% elsif config contains 'sucesso_subtitulo' and value[1] %}
        {% assign success_subtitle = value[1] | strip %}
      {% elsif config contains 'sucesso_descricao' and value[1] %}
        {% assign success_description = value[1] | strip %}
      {% elsif config contains 'cupom' and value[1] %}
        {% assign coupon = value[1] | strip %}
      {% endif %}
    {% endfor %}
  {% endif %}

  {% if banner.file_url != blank %}
    {% assign image_url = banner.file_url | resize: '500x' %}
  {% endif %}

  <script>
    window.popupNewsletterSettings = {
      script: "{{ 'newsletter-popup.v6.js' | component_path }}",
      styles: "{{ 'newsletter-popup.v6.css' | component_path }}",
      subdomain: '{{ current_shop.subdomain }}',
      imageUrl: '{{ image_url }}',
      upperTitle: '{{ upper_title }}',
      title: '{{ title }}',
      description: '{{ description }}',
      secondaryDescription: '{{ secondary_description }}',
      successTitle: '{{ success_title }}',
      successSubtitle: '{{ success_subtitle }}',
      successDescription: '{{ success_description }}',
      coupon: '{{ coupon }}',
    }
  </script>

  <div id="component-popup-newsletter-root"></div>
{% endfor %}
  1. Acesse assets > javascripts >components > vndaComponents.js;
  2. Verifique se o arquivo contém a seguinte função e configure-a de acordo com as suas necessidades:
export const NewsletterComponent = {
  root: document.querySelector('#component-popup-newsletter-root'),
  settings: window.popupNewsletterSettings || false,
  loaded: false,

  setPopupNewsletter: function () {
    const { settings, root } = NewsletterComponent;

    // Define propriedades do componente
    let maxWidth = settings.maxWidth;
    let subdomain = settings.subdomain;
    let imageUrl = settings.imageUrl;
    let upperTitle = settings.upperTitle;
    let title = settings.title;
    let description = settings.description;
    let secondaryDescription = settings.secondaryDescription;
    let successTitle = settings.successTitle;
    let successSubtitle = settings.successSubtitle;
    let successDescription = settings.successDescription;
    let coupon = settings.coupon;

    // Inicia o componente
    const componentNewsletterPopup = new Vnda.Component.NewsletterPopup({
      maxWidth: maxWidth,
      maxHeight: 500,
      imageUrl: imageUrl,
      imagePosition: 'left',
      popupPosition: 'center',
      upperTitle: upperTitle,
      title: title,
      description: description,
      secondaryDescription: secondaryDescription,
      successTitle: successTitle,
      successSubtitle: successSubtitle,
      successDescription: successDescription,
      coupon: coupon,
      textBtnSubmit: 'Enviar',
      classBtnSubmit: 'button-newsletter',
      formKey: `${subdomain}-newsletter`,
      hasNameField: false,
      hasLastNameField: false,
      hasDateOfBirthField: false,
      hasPhoneField: false,
      delay: 500,
      frequency: '7',
      language: 'pt-BR',
      placeholders: {
        // firstName: 'Nome',
        // lastName: 'Sobrenome',
        // phone: 'Telefone',
        email: 'Digite seu e-mail',
      },
    });

    // Renderiza o componente e marca como carregado
    componentNewsletterPopup.render(root);
    NewsletterComponent.loaded = true;
  },

  loadPopupNewsletter: function () {
    if (!NewsletterComponent.loaded) {
      const { settings } = NewsletterComponent;
      addAsset(settings.script, NewsletterComponent.setPopupNewsletter);
      addAsset(settings.styles);
    }
  },

  init: function () {
    const { root, settings } = this;

    if (!root || !settings) return;

    const eventType = window.innerWidth <= 1024 ? 'scroll' : 'mousemove';
    window.addEventListener(eventType, () => {
      NewsletterComponent.loadPopupNewsletter();
    }, { once: true });
  },
};

Confira os parâmetros do componente para configurá-los como desejado.

Parâmetros do componente

Os parâmetros definem as características dos Pop-up de Newsletter. Veja na tabela abaixo os parâmetros e o que eles determinam no componente. Note que os parâmetros que possuem valores padrões estão sinalizados na coluna Default, e as opções de entrada que o parâmetro pode receber estão apresentados na coluna Tipos/Opções de entrada.

Parâmetro

Descrição

Tipos/Opções de entrada

Default

Obrigatório

maxWidth

Define a largura máxima do pop-up.


Não

maxHeight

Define altura máxima do pop-up.


Não

imageUrl

URL da imagem do pop-up.


Não

imagePosition

Define a posição da imagem do pop-up, no caso de pop-up com imagem.

left ou right

right

Não

popupPosition

Define a posição do pop-up na tela.

center, top, bottom, right, left, right top, left top, right bottom ou left bottom

center,

Não

upperTitle

Define o título superior do pop-up.

Do tipo string

Não

title

Define a label do título do pop-up.

Do tipo string

Cadastre-se em nossa newsletter

Não

description

Define o primeiro parágrafo para a descrição exibida no popup

Do tipo string

Não

secondaryDescription

Define um segundo parágrafo

Do tipo string

Não

successTitle

Define o título da mensagem de sucesso de envio do formulário

Do tipo string

Obrigado!

Não

successSubtitle

Define o subtítulo da mensagem de sucesso do envio do formulário

Do tipo string

Não

successDescription

Define s mensagem de sucesso do envio do formulário

Do tipo string

Não

coupon

Define qual será o cupom de desconto e se o campo de cupom deve ser exibido.

Do tipo string

Não

textBtnSubmit

Define a label do botão do formulário do pop-up.

Do tipo string

Enviar

Não

formKey

Vincula o componente ao formulário criado no Admin para newsletter. Preencha essa campo com o Key do Admin.


Sim

hasNameField

Habilitar o campo para Nome/Name no formulário.

left ou right

Não

hasLastNameField

Habilitar o campo para Sobrenome/Last Name no formulário.

left ou right

Não

hasDateOfBirthField

Habilitar o campo Data de aniversário/Birthday no formulário.

left ou right

Não

hasPhoneField

Habilitar o campo Telefone/Phone no formulário.

left ou right

Não

classBtnSubmit

Define uma a classe extra para estilização do botão do formulário.

.btn .btn-default .btn-primary .btn-success .btn-info .btn-warning .btn-danger ou .btn-link

Não

delay

Define o tempo (em milissegundos) para que o pop-up abra.

Do tipo int

500

Não

frequency

Define a frequência de abertura do pop-up para o usuário

once always 7 14 30 365

always

Não

language

Define o idioma das labels padrões do formulário.

pt-BR en

pt-BR

Não

placeholders

Define os textos placeholders exibidos nos inputs

firstName: "texto desejado",

lastName: "texto desejado",

phone: "texto desejado",

email: "texto desejado",

Nome

Sobrenome

Telefone

E-mail

Não

🚧

O campo Email do formulário é habilitado por padrão no componente e sua propriedade não pode ser alterada.

Exemplo de implementação

Confira foi feita a implementação do componente de popup de newsletter no Template1 acessando os arquivos: