Ich bin mit Gutenberg vor seiner Aufnahme in Kern zu spielen, und ich würde gerne wissen, wie der bestehende Galerie Block erweitert ihre Anzeige zu ändern. Anstelle eines Rasters mit Miniaturansichten möchte ich beispielsweise eine Diashow mit Bildern anzeigen. Ist es möglich? Wenn das so ist, wie? Jede Hilfe wäre dankbar.
images
gallery
block-editor
Leemon
quelle
quelle
Antworten:
Ok, ich habe ein wenig mit diesem gespielt und haben es geschafft, den Ausgang des Galerie-Block zu ändern, mit folgenden Einschränkungen:
@wordpress/hooks
während der Diskussion über das, was System Hooks in Kern zu verwenden ist noch nicht abgeschlossen .Als erstes müssen wir ein Skript registrieren. Dies geschieht mit
wp_enqueue_scripts()
, aber auf demenqueue_block_editor_assets
Haken.Das Skript sollte das
wp-blocks
Skript als Abhängigkeit haben. Es ist mit ziemlicher Sicherheit bereits in den Editor geladen, aber es eine Abhängigkeit vermutlich machen sichergestellt, bevor unser Skript geladen wird.Der HTML - Code für eine Ausgabe des Blockes wird durch die behandelte
save()
Methode des Blockes. Sie können die Galerie-Blöcke in dieser Datei sehen .Zu diesem Zeitpunkt (März 2018) Gutenberg unterstützt einen Filter auf der Speichermethode von Blöcken
blocks.getSaveElement
. Wir können diesen Haken in JavaScript wie folgt einfügen:Das erste Argument ist der Haken Name, das zweite Argument ist - glaube ich - ein Namensraum, und das letzte Argument ist die Callback-Funktion.
Da wir die
save()
Methode des Blocks ersetzen , müssen wir ein neues Element zurückgeben. Dies ist jedoch kein normales HTML - Element , das wir zurückkommen müssen. Wir müssen zurückkehren ein Reagieren Element.Wenn Sie sich die
save()
Methode des ursprünglichen Blocks ansehen , sehen Sie, dass es sich um JSX handelt. Reagieren, der Gutenberg unter der Motorhaube verwendet, unterstützt es für Elemente machen. In diesem Artikel erfahren Sie mehr darüber.Für JSX ist normalerweise ein Erstellungsschritt erforderlich. Da ich für dieses Beispiel jedoch keinen Erstellungsschritt einführe, benötigen wir eine Möglichkeit, ein Element ohne JSX zu erstellen. React bietet dies mit
createElement()
. Wordpress stellt einen Wrapper für diese und andere reagieren Funktionalität in Formwp.element
. So verwendencreateElement()
wir verwendenwp.element.createElement()
.In der Callback - Funktion für
blocks.getSaveElement
erhalten wir:element
Das ursprüngliche Element durch den Block angelegt.blockType
Ein Objekt, das den Block verwendet wird.attributes
Die Eigenschaften der Blockinstanz. In unserem Beispiel beinhaltet dies die Bilder in der Galerie und Einstellungen wie die Anzahl der Spalten.So ist unsere Callback-Funktion muss:
Hier ist ein komplettes Beispiel der einfach gibt eine
ul
mit einer Klasse,my-gallery
undli
s für jedes Bild mit der Klassemy-gallery-item
und undimg
in jedem mit demsrc
Satz zu der Bild - URL.Einige Dinge zu beachten:
ul.wp-block-gallery .blocks-gallery-item
, sodass dieses Markup und diese Klassen erforderlich sind, damit der Block bearbeitet werden kann. Dieses Markup ist auch für den Standardstil verwendet.attributes.images.map
durchläuft jedes Bild und gibt ein Array von untergeordneten Elementen als Inhalt für das Hauptelement zurück. Innerhalb dieser Elemente ist es ein weiteres untergeordnetes Element für das Bild selbst.quelle
Hier ist eine aktualisierte Antwort zu geben. Ich fand diesen Beitrag äußerst hilfreich bei der Beantwortung der Frage, wie der Gallery Block erweitert werden kann.
Kurz gesagt, es ist ratsam, nur einen neuen Block zu erstellen, anstatt einen vorhandenen zu erweitern. Von der Post in meinem obigen Link:
Der Link oben bezieht sich auch auf die Create-Guten_Block Plugin , das ein Kommandozeilen - Tool ist , dass alles , was Sie brauchen generieren Sie mit Block - Erstellung gestartet. Das Tool ist sehr einfach zu bedienen, und einfache Einrichtung.
Mit diesen Ressourcen konnte ich in kurzer Zeit herausfinden, wie ein benutzerdefinierter Galerieblock entwickelt werden kann
quelle