Barra de anúncios agendados Shopify

shopify dawn theme slider

Compatibilidade: a maior parte do tema Shopify, incluindo Dawn

Adicione um banner à sua loja Shopify com códigos simples. Use-o várias vezes na mesma página. Deixe a barra deslizar no celular. Você pode usar esta seção da barra para logotipo, informações de serviço ou anúncio.

Agende para qualquer dia que desejar que o banner apareça . Você também pode ter a opção de não agendar. Resolvi adicionar a programação depois de fazer o vídeo. Você deve ter esse menu suspenso ao clicar na barra de seção.

Confira a loja DEMO aqui 💻

Banner programado

O que você está comprando:

  • Banner programado de acordo com sua necessidade
  • Ícones e texto podem ser usados
  • Link clicável

O que torna nosso código melhor:

  • Não usamos bibliotecas externas, com isso dito, nosso código não terá nenhum efeito mínimo no desempenho de velocidade do seu site
  • Não deixamos nem adicionamos códigos para anunciar em nosso site
  • Nosso código é compatível com dispositivos móveis

Quaisquer problemas relacionados ao código serão corrigidos sem custo adicional, excluindo solicitações de customização de código. Basta entrar em contato conosco em "Converse conosco". Estamos a apenas um botão de distância.

Para iniciar.

1. Vá para sua loja online > Temas > Ações > Editar código

2. Vá para a pasta Seção e crie uma seção com o nome de 'seção de barra'. Em seguida, cole o código abaixo.

{ % atribuir bar_interval = seção. configurações . intervalo_barra | vezes : 1000 % }
 < barra - seção 
class = "seção-bar--container"
 dados - barra - intervalo = " {{bar_interval}} "
 dados - dia = " {{- section.settings.day_schedule -}} "
 >
 <ul> _
 { %- para bloco na seção. blocos -% } 
< li class = "barra de seção" { { bloco. shopify_attributes } } >
 < imagem
 class = " {% if section.settings.no_icon %} ocultar imagem {% endif %} "
 src = " {{block.settings.bar_image | img_url: 'small' }} " 
alt = " {{block.settings.bar_image.alt | img_url: 'small' }} "
 >
 { % -se bloco. configurações . texto ! = em branco ou bloco. configurações . link ! = em branco -% } 
<a href = "{{ block.settings.link }} " style = "color: {{section.settings.text_color}} " > _ {{ block.settings.link }} _ {{section.settings.text_color}} _
 < p > { { bloco. configurações . texto | escapar } } < / p > 
< / a >
 { %- fim se -% }
 < / li >
 { %- fim para -% }
 < / ul >

 < div class = "ponto-caixa" > 
< div class = "dot-wrapper" >
 { %- para bloco na seção. blocos -% }
 < intervalo
 class = "bar-ponto {% if forloop.first %} active-dot {% endif %} " 
dados - ponto - índice = " {{forloop.index0}} "
 > & nbsp < / span
 >
 { % fim para % }
 < / div >
 < / div > 
< / barra - seção >
 <estilo> _
 . seção - barra -- contêiner {
 posição : relativa ;
 exibição : flexível ;
 preenchimento : 0 3 % ;
 justificar - conteúdo : espaço ao redor ; 
fundo - cor : { { seção. configurações . esquema de cores } } ;
 estouro : oculto ;
 }

 . seção - barra -- contêiner {
 -webkit -touch -callout : nenhum ; 
-webkit - user - select : nenhum ;
 -khtml - user - select : nenhum ;
 -moz - user - select : nenhum ;
 -ms - user - select : nenhum ;
 seleção de usuário : nenhum ;
 }
 
. seção - barra -- contêiner ul {
 posição : relativa ;
 flex - wrap : herdar ;
 exibição : flexível ;
 estouro -x : automático ;
 scroll - snap - type : x obrigatório ;
 comportamento de rolagem : suave ; 
scroll - preenchimento - esquerda : 1,5rem ;
 - webkit - overflow - rolagem : toque ;
 largura : 100 % ;
 preenchimento - esquerda : 0 ;
 }

 . seção - barra -- contêiner ul { 
scrollbar - color : rgb ( var ( -color - foreground ) ) rgba ( var ( -color - foreground ) , 0,04 ) ;
 -ms - overflow - style : nenhum ;
 largura da barra de rolagem : nenhuma ; 
}

 . seção -barra --container ul :: -webkit -barra de rolagem {
 altura : 0,4rem ;
 largura : 0,4rem ;
 Mostrar nenhum ;
 }

 . seção - barra {
 exibição : flexível ; 
largura : 100 % ;
 justificar - conteúdo : centro ;
 alinhar - itens : centro ;
 scroll - snap - align : center ;
 }

 . seção - barra a : pairar {
 decoração de texto : sublinhado ;
 }
 
. seção - barra img {
 largura : 30px ;
 margem - direita : 5px ;
 }

 . seção - barra p {
 margem : 0 ;
 alinhamento de texto : centro ;
 tamanho da fonte : 14px ;
 }
 
. seção - barra a {
 decoração de texto : nenhuma ;
 }

 . ponto - caixa {
 largura : 100 % ;
 Mostrar nenhum ;
 posição : absoluta ;
 esquerda : 0 ; 
inferior : 23 % ;
 justificar - conteúdo : centro ;
 }

 . ponto - invólucro {
 exibição : flexível ;
 posição : absoluta ;
 largura : 100 % ;
 altura : conteúdo máximo ; 
justificar - conteúdo : centro ;
 }

 . barra - ponto {
 largura : 5px ;
 altura : 5px ;
 margem : 0 5px ;
 plano de fundo : rgba ( 0 , 0 , 0 , 0,1 ) ; 
raio da borda : 50 % ;
 cursor : ponteiro ;
 }

 . ativo - ponto {
 fundo : #000;
 }

 . ocultar - banner {
 Mostrar nenhum ! importante ;
 }
 
Tela @media somente e ( largura máxima : 1200px ) {
 . seção - barra {
 largura mínima : 100 % ;
 }

 . ponto - caixa {
 exibição : flexível ;
 }
 }
 
Tela @media somente e ( largura máxima : 400px ) {
 . ocultar - imagem {
 Mostrar nenhum ! importante ;
 }
 }
 < / estilo >
 { % esquema % }
 { 
"name" : "Barra de Seção" ,
 "max_blocks" : 12 ,
 "configurações" : [
 {
 "tipo" : "selecionar" ,
 "id" : "dia_horário" ,
 "label" : "Agende o dia em que deseja que o banner apareça" ,
 "padrão" : "8" , 
"opções" : [
 {
 "valor" : "1" ,
 "rótulo" : "segunda-feira"
 } ,
 {
 "valor" : "2" ,
 "label" : "Terça-feira"
 } ,
 {
 "valor" : "3" , 
"label" : "Quarta-feira"
 } ,
 {
 "valor" : "4" ,
 "rótulo" : "Quinta-feira"
 } ,
 {
 "valor" : "5" ,
 "rótulo" : "Sexta-feira"
 } ,
 {
 "valor" : "6" , 
"rótulo" : "Sábado"
 } ,
 {
 "valor" : "0" ,
 "rótulo" : "Domingo"
 } ,
 {
 "valor" : "8" ,
 "label" : "Desativado"
 }
 ]
 } ,
 { 
"tipo" : "cor" ,
 "id" : "esquema_cor" ,
 "padrão" : "#F3F3F3" ,
 "label" : "Cor de fundo da barra de seção"
 } ,
 {
 "tipo" : "cor" ,
 "id" : "text_color" ,
 "padrão" : "#000" , 
"label" : "Cor do texto da barra de seção"
 } ,
 {
 "tipo" : "intervalo" ,
 "id" : "bar_interval" ,
 "rótulo" : "intervalo" ,
 "máximo" : 9 ,
 "min" : 1 ,
 "passo 1 , 
"unidades " ,
 "padrão" : 3
 } ,
 {
 "tipo" : "caixa de seleção" ,
 "label" : "Nenhum ícone de imagem no celular" ,
 "id" : "no_icon"
 }
 ] ,
 "blocos" : [
 { 
"tipo" : "seção_bar" ,
 "nome" : "barra de seção" ,
 "configurações" : [
 {
 "type" : "image_picker" ,
 "id" : "bar_image" ,
 "label" : "Ícone da barra de seção"
 } ,
 { 
"tipo" : "texto" ,
 "id" : "texto" ,
 "default" : "Bem-vindo à nossa loja" ,
 "rótulo" : "Texto"
 } ,

 {
 "tipo" : "url" ,
 "id" : "link" ,
 "label" : "Link da barra de seção" 
}
 ]
 }
 ] ,
 "predefinições" : [
 {
 "name" : "Barra de Seção"
 }
 ]
 }
 { % termina o esquema % }

3. Por último, abra o arquivo global.js na pasta Asset e cole o código na parte inferior.

classe BarSection estende HTMLElement { 
construtor ( ) {
 super ( ) ;
 esse . barInterval = isto . conjunto de dados . barraInterval ;
 esse . barraSlider = isto . querySelector ( 'ul' ) ; 
esse . barra = isto . querySelectorAll ( 'li' ) ;
 esse . barDots = isto . querySelectorAll ( '.bar-ponto' ) ;
 esse . barraAtual = 0 ; 
esse . totalBar = isto . bar . comprimento ;

 esse . barDots . para cada (
 ( ponto ) => ponto. addEventListener ( ' clique' , isto.showDot.bind ( este ) ) 
) ;
 esse . intervalo = setInterval ( este.nextBar.bind ( este ) , este.barInterval ) ; _
 esse . iniciar ( ) ; 
const resizeObserver = new ResizeObserver ( entradas => this .init ( ) ) ;
 redimensionarObserver. observe ( this.barSlider ) ; _
 esse . agendar ( ) ;
 }
 
iniciar ( ) {
 esse . intervalo ;
 esse . atualização ( 0 ) ;

 }

 agendar ( ) {
 esse . agendar = isto . conjunto de dados . dia ; 
esse . data = nova Data ( ) ;
 esse . dayOfWeekNumber = este . data . getDia ( ) ;

 if ( este . cronograma ! = 8 ) { 
if ( this.dayOfWeekNumber ! = this.schedule ) { _ _
 esse . lista de classes . add ( 'ocultar-banner' ) ;
 }
 }
 }

 atualização ( pontoIndex ) { 
esse . barDots . forEach ( ponto => ponto. classList.remove ( 'ponto ativo ' ) ) ;
 esse . barDots [ pontoIndex ] . lista de classes . add ( 'ponto ativo' ) ;

 
esse . slideScrollPosition = isto . barraSlider . larguradocliente * pontoIndex ;
 esse . barraSlider . scrollTo ( {
 esquerda : isto . slideScrollPosition
 } ) ;
 }

 mostrarDot ( e ) { 
e. preventDefault ( ) ;
 esse . atualização ( por exemplo , currentTarget.dataset.dotIndex )
 }

 próximaBar ( ) {
 esse . barra atual ++ ; 
if ( isto . barra atual == este . barra total ) {
 esse . barraAtual = 0 ;
 }
 esse . atualização ( this.currentBar ) ; _
 }
 }
 
elementos personalizados. define ( 'seção-barra' , BarSection ) ;

Você também pode adicionar isso a qualquer parte do seu site como uma seção clicando em “Personalizar tema”. Adicione uma seção e procure a “Barra de seção”.

É isso (",). Vamos mantê-lo rápido e amável.

1 comentário

Very useful thanks! How would you make the banner image clickable in dawn theme?

Arati

Deixe um comentário