Estoy jugando con Gutenberg antes de su inclusión en el núcleo, y me gustaría saber cómo extender el bloque de galería existente para cambiar su visualización. Por ejemplo, en lugar de una cuadrícula de miniaturas, me gustaría mostrar una presentación de diapositivas de imágenes. ¿Es posible? ¿Si es así, cómo? Cualquier ayuda sería apreciada.
images
gallery
block-editor
leemon
fuente
fuente
Respuestas:
Ok, he estado jugando con esto por un rato y he logrado cambiar la salida del bloque de la Galería, con las siguientes advertencias:
@wordpress/hooks
mientras se debate sobre qué sistema de ganchos usar en Core está en curso .Lo primero que debemos hacer es registrar un script. Esto se hace con
wp_enqueue_scripts()
, pero en elenqueue_block_editor_assets
gancho.El script debe tener el
wp-blocks
script como una dependencia. Es casi seguro que ya está cargado en el editor, pero convertirlo en una dependencia presumiblemente asegura que se cargue antes de nuestro script.El HTML para la salida de un bloque es manejado por el
save()
método del bloque. Puedes ver los bloques de la Galería en este archivo .En esta etapa (marzo de 2018) Gutenberg es compatible con un filtro en el método para guardar de bloques,
blocks.getSaveElement
. Podemos agregar un gancho a esto en JavaScript como este:El primer argumento es el nombre del gancho, el segundo argumento es, creo, un espacio de nombres, y el último argumento es la función de devolución de llamada.
Como estamos reemplazando el
save()
método del bloque, necesitamos devolver un nuevo elemento. Sin embargo, este no es un elemento HTML normal que debemos devolver. Necesitamos devolver un elemento React .Cuando observa el
save()
método del bloque original, lo que ve es JSX. React, que Gutenberg usa bajo el capó, lo admite para representar elementos. Vea este artículo para más información al respecto.JSX normalmente requiere un paso de compilación, pero como no estoy introduciendo un paso de compilación para este ejemplo, necesitamos una forma de crear un elemento sin JSX. React proporciona esto con
createElement()
. WordPress proporciona un contenedor para esta y otras funcionalidades de reacción en forma dewp.element
. Así que para usarcreateElement()
usamoswp.element.createElement()
.En la función de devolución de llamada para
blocks.getSaveElement
obtenemos:element
El elemento original creado por el bloque.blockType
Un objeto que representa el bloque que se está utilizando.attributes
Las propiedades de la instancia de bloque. En nuestro ejemplo, esto incluye las imágenes en la galería y configuraciones como el número de columnas.Entonces nuestra función de devolución de llamada necesita:
Aquí está un ejemplo completo que simplemente se da salida a una
ul
con una clase,my-gallery
yli
es para cada imagen con la clasemy-gallery-item
y la yimg
en cada uno con lasrc
unidad para obtener la URL de la imagen.Algunas cosas a tener en cuenta:
ul.wp-block-gallery .blocks-gallery-item
, por lo que este marcado y esas clases son necesarias para poder editar el bloque. Este marcado también se utiliza para el estilo predeterminado.attributes.images.map
se repite sobre cada imagen y devuelve una matriz de elementos secundarios como contenido para el elemento principal. Dentro de estos elementos hay otro elemento hijo para la imagen misma.fuente
Aquí para proporcionar una respuesta actualizada. Encontré esta publicación extremadamente útil para responder la pregunta de cómo extender el Bloque de Galería.
En resumen, es recomendable crear un nuevo bloque en lugar de extender uno existente. De la publicación en mi enlace de arriba:
El enlace de arriba también hace referencia al complemento Create-Guten_Block que es una herramienta de línea de comandos que generará todo lo que necesita para comenzar con la creación de bloques. La herramienta es muy fácil de usar y fácil de configurar.
Con estos recursos, pude descubrir cómo desarrollar un bloque de galería personalizado en poco tiempo
fuente