Pular para o conteúdo

Pop-up de Newsletter

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).

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.

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âmetroDescriçãoTipos/OpçõesDefaultObrigatório
maxWidthDefine a largura máxima do pop-up.--Não
maxHeightDefine a altura máxima do pop-up.--Não
imageUrlURL da imagem do pop-up.--Não
imagePositionPosição da imagem no pop-up.left ou rightrightNão
popupPositionPosição do pop-up na tela.center, top, bottom, right, left, right top, left top, right bottom, left bottomcenterNão
upperTitleDefine o título superior do pop-up.string-Não
titleDefine a label do título do pop-up.stringCadastre-se em nossa newsletterNão
descriptionPrimeiro parágrafo da descrição.string-Não
secondaryDescriptionDefine um segundo parágrafo.string-Não
successTitleTítulo da mensagem de sucesso.stringObrigado!Não
successSubtitleSubtítulo da mensagem de sucesso.string-Não
successDescriptionMensagem de sucesso do envio.string-Não
couponDefine o cupom e se o campo deve aparecer.string-Não
textBtnSubmitLabel do botão de envio.stringEnviarNão
formKeyKey do formulário no Admin.--Sim
hasNameFieldHabilita o campo Nome.true ou false-Não
hasLastNameFieldHabilita o campo Sobrenome.true ou false-Não
hasDateOfBirthFieldHabilita o campo Data de Nascimento.true ou false-Não
hasPhoneFieldHabilita o campo Telefone.true ou false-Não
classBtnSubmitClasse extra para o botão..btn, .btn-primary, etc.-Não
delayTempo (ms) para abertura do pop-up.int500Não
frequencyFrequência de abertura para o usuário.once, always, 7, 14, 30, 365alwaysNão
languageIdioma das labels do formulário.pt-BR, enpt-BRNão
placeholdersDefine os textos de placeholder.Objeto com firstName, lastName, phone, emailNome, Sobrenome, Telefone, E-mailNão
O campo `Email` do formulário é habilitado por padrão no componente e sua propriedade não pode ser alterada.

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