Je joue avec Gutenberg avant son inclusion dans le noyau, et j'aimerais savoir comment étendre le bloc de galerie existant pour changer son affichage. Par exemple, au lieu d'une grille de vignettes, j'aimerais montrer un diaporama d'images. C'est possible? Si c'est le cas, comment? Toute aide serait appréciée.
images
gallery
block-editor
leemon
la source
la source
Réponses:
Ok, je joue avec cela depuis un petit moment et j'ai réussi à changer la sortie du bloc Gallery, avec les mises en garde suivantes:
@wordpress/hooks
pendant que la discussion sur le système de crochets à utiliser dans Core est en cours .La première chose que nous devons faire est d'enregistrer un script. Cela se fait avec
wp_enqueue_scripts()
, mais sur leenqueue_block_editor_assets
crochet.Le script doit avoir le
wp-blocks
script comme dépendance. Il est presque certainement déjà chargé dans l'éditeur, mais en faire une dépendance assure probablement qu'il est chargé avant notre script.Le code HTML pour la sortie d'un bloc est géré par la
save()
méthode du bloc. Vous pouvez voir le bloc Galerie dans ce fichier .A ce stade (Mars 2018) Gutenberg soutient un filtre sur la méthode des blocs de sauvegarde,
blocks.getSaveElement
. Nous pouvons ajouter un crochet à cela en JavaScript comme ceci:Le premier argument est le nom du hook, le 2ème argument est - je pense - un espace de noms, et le dernier argument est la fonction de rappel.
Puisque nous remplaçons la
save()
méthode du bloc, nous devons retourner un nouvel élément. Cependant, ce n'est pas un élément HTML normal que nous devons retourner. Nous devons renvoyer un élément React .Lorsque vous regardez la
save()
méthode du bloc d'origine, vous voyez JSX. React, que Gutenberg utilise sous le capot, le prend en charge pour le rendu des éléments. Consultez cet article pour en savoir plus.JSX nécessite normalement une étape de construction, mais comme je n'introduis pas d'étape de construction pour cet exemple, nous avons besoin d'un moyen de créer un élément sans JSX. React le fournit
createElement()
. WordPress fournit un wrapper pour cela et d'autres fonctionnalités de réaction sous la forme dewp.element
. Donc, pour utiliser,createElement()
nous utilisonswp.element.createElement()
.Dans la fonction de rappel pour
blocks.getSaveElement
nous obtenons:element
L'élément d'origine créé par le bloc.blockType
Un objet représentant le bloc utilisé.attributes
Les propriétés de l'instance de bloc. Dans notre exemple, cela inclut les images dans la galerie et les paramètres comme le nombre de colonnes.Notre fonction de rappel doit donc:
Voici un exemple complet qui affiche simplement a
ul
avec une classe,,my-gallery
etli
s pour chaque image avec la classemy-gallery-item
et etimg
dans chacun avec l'src
ensemble vers l'URL de l'image.Quelques points à noter:
ul.wp-block-gallery .blocks-gallery-item
, donc ce balisage et ces classes sont nécessaires pour que le bloc soit éditable. Ce balisage est également utilisé pour le style par défaut.attributes.images.map
boucle sur chaque image et renvoie un tableau d'éléments enfants en tant que contenu pour l'élément principal. À l'intérieur de ces éléments, il y a un autre élément enfant pour l'image elle-même.la source
Ici pour fournir une réponse mise à jour. J'ai trouvé cet article extrêmement utile pour répondre à la question de savoir comment étendre le bloc Galerie.
En bref, il est conseillé de simplement créer un nouveau bloc plutôt que d'étendre un existant. De la poste dans mon lien ci-dessus:
Le lien ci-dessus fait également référence au plugin Create-Guten_Block qui est un outil en ligne de commande qui générera tout ce dont vous avez besoin pour vous lancer dans la création de blocs. L'outil est très facile à utiliser et à configurer.
Avec ces ressources, j'ai pu comprendre comment développer un bloc de galerie personnalisé en peu de temps
la source