Estou brincando com o Gutenberg antes de sua inclusão no núcleo e gostaria de saber como estender o bloco de galeria existente para alterar sua exibição. Por exemplo, em vez de uma grade de miniaturas, eu gostaria de mostrar uma apresentação de slides de imagens. É possível? Se sim, como? Qualquer ajuda seria apreciada.
images
gallery
block-editor
leemon
fonte
fonte
Respostas:
Ok, estou brincando com isso há um tempo e consegui alterar a saída do bloco Gallery, com as seguintes ressalvas:
@wordpress/hooks
enquanto a discussão sobre o sistema de ganchos a ser usado no Core está em andamento .A primeira coisa que precisamos fazer é registrar um script. Isso é feito com
wp_enqueue_scripts()
, mas noenqueue_block_editor_assets
gancho.O script deve ter o
wp-blocks
script como uma dependência. É quase certo que já esteja carregado no editor, mas torná-lo uma dependência presumivelmente garante que ele seja carregado antes do nosso script.O HTML para a saída de um bloco é tratado pelo
save()
método do bloco. Você pode ver os blocos da Galeria neste arquivo .Nesta fase (março de 2018), o Gutenberg suporta um filtro no método de salvar blocos
blocks.getSaveElement
. Podemos adicionar um gancho a isso no JavaScript, assim:O primeiro argumento é o nome do gancho, o segundo argumento é - eu acho - um espaço para nome e o último argumento é a função de retorno de chamada.
Como estamos substituindo o
save()
método do bloco, precisamos retornar um novo elemento. No entanto, este não é um elemento HTML normal que precisamos retornar. Precisamos retornar um elemento React .Quando você olha para o
save()
método do bloco original, o que vê é JSX. O React, que Gutenberg usa sob o capô, o suporta para renderizar elementos. Veja este artigo para saber mais sobre isso.O JSX normalmente requer uma etapa de construção, mas como não estou introduzindo uma etapa de construção para este exemplo, precisamos de uma maneira de criar um elemento sem o JSX. React fornece isso com
createElement()
. O WordPress fornece um invólucro para esta e outras funcionalidades de reação na forma dewp.element
. Então, para usarcreateElement()
, usamoswp.element.createElement()
.Na função de retorno de chamada
blocks.getSaveElement
, obtemos:element
O elemento original criado pelo bloco.blockType
Um objeto que representa o bloco que está sendo usado.attributes
As propriedades da instância do bloco. No nosso exemplo, isso inclui as imagens na galeria e configurações como o número de colunas.Portanto, nossa função de retorno de chamada precisa:
Aqui está um exemplo completo que simplesmente emite um
ul
com uma classe,my-gallery
eli
é para cada imagem com a classemy-gallery-item
e eimg
em cada um deles com osrc
set para o URL da imagem.Algumas coisas a serem observadas:
ul.wp-block-gallery .blocks-gallery-item
, portanto, essa marcação e essas classes são necessárias para que seja possível editar o bloco. Essa marcação também é usada para o estilo padrão.attributes.images.map
está fazendo um loop sobre cada imagem e retornando uma matriz de elementos filho como o conteúdo do elemento principal. Dentro desses elementos, há outro elemento filho para a própria imagem.fonte
Aqui para fornecer uma resposta atualizada. Achei este post extremamente útil para responder à pergunta de como estender o bloco de galeria.
Em resumo, é aconselhável apenas criar um novo bloco em vez de estender um existente. Do post no meu link acima:
O link acima também faz referência ao plug-in Create-Guten_Block que é uma ferramenta de linha de comando que irá gerar tudo o que você precisa para iniciar a criação de blocos. A ferramenta é muito fácil de usar e fácil de configurar.
Com esses recursos, consegui descobrir como desenvolver um bloco de galeria personalizado em pouco tempo
fonte