Crie uma colagem com blocos reposicionáveis ​​ou dinâmicos na página do Shopify

Create a Collage with Repositionable or Dynamic Blocks in Shopify Page

Neste tutorial, vamos adicionar uma seção de colagem onde você pode reposicionar os blocos na página do Shopify usando o layout de grade.

Espero que o Shopify utilize a grade para posicionar os blocos facilmente.

  1. Vá para Loja online> Temas> Ações> Editar código
  2. Vá para a pasta Seção, crie uma nova seção e nomeie-a como colagem personalizada. Substitua o código abaixo e clique em SALVAR
{ { 'colagem personalizada.css' | URL_do_asset | folha_de_estilo } }
 < div
 class = "customCollage" 
estilo = "
 linhas do modelo de grade:
 {% if section.settings.done_editing == true %}
 repetir(ajuste automático, 5vw);
 {% else %}
 repetir( {{section.settings.page_row}} , 5vw);
 {% endif %}
 "
 >
 { % para blocos na seção. blocos % }
 < div
 class = "colagemBlock"
 estilo = " 
coluna de grade: {{blocks.settings.col1}} / span {{blocks.settings.col2}} ;

 linha de grade: {{blocks.settings.row1}} / span {{blocks.settings.row2}} ;
 "
 >
 { % de blocos de casos . tipo % }
 { % quando 'collage_image' % } 
< div class = "collageImageWrapper" >
 < img class = "collageImage" src = " {{blocks.settings.collage_image | img_url: 'master' }} " >
 < / div >

 { % quando 'collage_video' % } 
< div class = "collageVideoWrapper" >
 < iframe class = "collageVideo" src = "//www.youtube.com/embed/ {{blocks.settings.collage_video.id}} " >< / iframe >
 < / div >
 
{ % quando 'collage_title' % }
 < h1 class = "collageTitle" > { { blocos. configurações . título_colagem } } < / h1 >

 { % quando 'collage_content' % } 
< div class = "textContent" > { { blocos. configurações . colagem_content } } < / div >

 { % quando 'collage_product' % } 
{ % atribuir produto = todos_produtos [ blocos. configurações . produto_colagem ] % }
 { % atribuir imagem_produto = produto. selecionado_ou_primeira_variável_disponível % }

 < div class = "collageProductWrapper" > 
< div class = "collageProduct" >
 < img src = " {{ product_image | img_url: " master " }} " >

 < span > { { produto. título } } < / span >
 
< span > { { produto. preço | dinheiro } } < / span >
 < / div >
 < / div >
 { % final % } 
< / div >
 { % fim para % }
 < / div >

 { % esquema % }
 {
 "name" : "Colagem personalizada" ,
 "configurações" : [
 { 
"tipo" : "intervalo" ,
 "id" : "página_row" ,
 "label" : "Altura da página" ,
 "máximo" : 100 ,
 "min" : 5 ,
 "passo 1 ,
 "padrão" : 12
 } ,
 { 
"tipo" : "caixa de seleção" ,
 "id" : "done_editing" ,
 "label" : "Clique quando terminar a edição" ,
 "padrão" : falso
 }
 ] ,
 "blocos" : [
 {
 "nome" : "imagem de colagem" , 
"type" : "collage_image" ,
 "configurações" : [
 {
 "type" : "image_picker" ,
 "id" : "imagem_colagem" ,
 "label" : "Imagem de colagem"
 } ,
 {
 "tipo" : "intervalo" ,
 "id" : "col1" , 
"label" : "Posição esquerda e direita" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 {
 "tipo" : "intervalo" ,
 "id" : "col2" , 
"label" : "Número de colunas a ocupar" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 {
 "tipo" : "intervalo" ,
 "id" : "linha1" , 
"label" : "Posicionar para cima e para baixo" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 {
 "tipo" : "intervalo" ,
 "id" : "linha2" , 
"label" : "Número de linhas a ocupar" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 }
 ]
 } ,
 {
 "nome" : "vídeo de colagem" , 
"type" : "collage_video" ,
 "configurações" : [
 {
 "tipo" : "video_url" ,
 "id" : "colagem_vídeo" ,
 "label" : "Vídeo de colagem" ,
 "aceitar" : [
 "YouTube"
 ]
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "col1" ,
 "label" : "Posição esquerda e direita" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "col2" ,
 "label" : "Número de colunas a ocupar" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "linha1" ,
 "label" : "Posicionar para cima e para baixo" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 }
 ]
 } , 
{
 "nome" : "título da colagem" ,
 "tipo" : "título_colagem" ,
 "configurações" : [
 {
 "tipo" : "texto" ,
 "id" : "collage_title" ,
 "label" : "Título da colagem"
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "col1" ,
 "label" : "Posição esquerda e direita" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "col2" ,
 "label" : "Número de colunas a ocupar" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "linha1" ,
 "label" : "Posicionar para cima e para baixo" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "linha2" ,
 "label" : "Número de linhas a ocupar" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 }
 ]
 } , 
{
 "nome" : "conteúdo da colagem" ,
 "tipo" : "collage_content" ,
 "configurações" : [
 {
 "type" : "richtext" ,
 "id" : "collage_content" ,
 "label" : "Conteúdo da colagem"
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "col1" ,
 "label" : "Posição esquerda e direita" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "col2" ,
 "label" : "Número de colunas a ocupar" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "linha1" ,
 "label" : "Posicionar para cima e para baixo" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "linha2" ,
 "label" : "Número de linhas a ocupar" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 }
 ]
 } , 
{
 "nome" : "produto de colagem" ,
 "tipo" : "produto_colagem" ,
 "configurações" : [
 {
 "tipo" : "produto" ,
 "id" : "produto_colagem" ,
 "label" : "Produto de colagem"
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "col1" ,
 "label" : "Posição esquerda e direita" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "col2" ,
 "label" : "Número de colunas a ocupar" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "linha1" ,
 "label" : "Posicionar para cima e para baixo" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 } ,
 { 
"tipo" : "intervalo" ,
 "id" : "linha2" ,
 "label" : "Número de linhas a ocupar" ,
 "máximo" : 50 ,
 "min" : 1 ,
 "passo 1 ,
 "padrão" : 1
 }
 ]
 } 
] ,
 "predefinições" : [
 {
 "name" : "Colagem personalizada"
 }
 ]
 }
 { % termina o esquema % } 

  1. Vá para a pasta Ativos e crie um novo arquivo .css. Nomeie-o como custom.collage. Em seguida, cole o código abaixo.
. colagem personalizada {
 largura : 100 % ; 
altura : 100 % ;
 exibição : grade ;
 lacuna : 15px ;
 preenchimento : 30px ;
 grid - template - colunas : repita ( 12 , 1fr ) ;
 }
 . colagemBlock {
 largura : 100 % ; 
altura : 100 % ;
 }
 . colagemImageWrapper {
 largura : 100 % ;
 altura : 100 % ;
 }
 . colagemImagem {
 largura : 100 % ; 
altura : 100 % ;
 ajuste ao objeto : capa ;
 }
 . colagemVideoWrapper {
 largura : 100 % ;
 altura : automático ;
 preenchimento inferior : 60 % ;
 posição : relativa ; 
}
 . colagemVídeo {
 largura : 100 % ;
 altura : 100 % ;
 posição : absoluta ;
 }
 . colagemTítulo {
 tamanho da fonte : braçadeira ( 15px, 4vw, 40px ) ;
 }
 . textoConteúdo { 
largura : 100 % ;
 altura : 100 % ;
 estouro : oculto ;
 tamanho da fonte : braçadeira ( 10px, 2vw, 40px ) ;
 }
 p {
 altura da linha : 1em ;
 } 
@media screen e ( largura mínima : 24,15em ) {
 /* 21em "gate" * tamanho da fonte 1,15 */
 p { 
altura da linha : calc ( 1,3em + ( 1,5 - 1,3 ) * ( ( 100vw - 21em ) / ( 35 - 21 ) )) ) ;
 }
 } 
@media ( largura mínima : 40,25em ) {
 /* 35em "gate" * tamanho da fonte 1,15 */
 p {
 altura da linha : 1,5em ;
 }
 }
 /* tela @media only e (largura máxima: 1050px){
 .textContent{
 altura da linha: 1;
 }
 }
 */
 Tela @media somente e ( largura máxima : 300px ) { 
. colagem personalizada {
 exibição : flexível ;
 flex - direction : coluna ;
 justificar - conteúdo : centro ;
 }
 . bloco personalizado {
 exibição : flexível ;
 }
 . colagemTítulo {
 exibição : flexível ;
 justificar - conteúdo : centro ; 
margem : 0 automático ;
 }
 } 

Você terminou. (“,)

Encontrei alguns problemas depois de criar o vídeo. Eu adicionei alguns códigos para consertar isso.

Dicas: Use a altura mínima de página possível para evitar grandes lacunas na parte inferior.

Certifique-se de atribuir o número de células (colunas ou linhas) que cabem no título ou conteúdo.

Certifique-se de não ter espaço no editor da caixa de conteúdo. Para evitar lacunas desnecessárias.

4 comentários

I tried inserting this code into my Dawn theme, and Shopify rejected it citing “Invalid JSON in tag ‘schema’”.

I tried to self-serve a quick fix by running it through a JSON formatter (https://jsonformatter.curiousconcept.com/#), and the result was unintelligible.

Has something changed in the past year to make this trick unusable? Is there a newer version? I really like this concept, and I’d love to be able to implement it on my site…

Mike

Very Great Section for Front Page Design, could it applied on page also?

Jackie

Hi Dylan,
Since image are assigned to the grid area, you can manipulate its size to by occupying less or more grid areas. What I am talking about is the 13:30 part of the video. Regarding at mobile view, I cannot recreate your problem. Items should be displaying flex in mobile view as what we design in the last part of our css code

Anonymous

Hi There,

Tried installing this onto the dawn theme, and when i upload any image, they are just way too big.
And when you switch to mobile view, it only shows 1/8 of the photo..

Any solutions to fix this?

Thanks

Dylan

Deixe um comentário