Ich verwende also verschachtelte Blöcke in Wordpress Gutenberg. Ich wende einen Wrapper auf meine Elemente an, die eine Bootstrap-Containerklasse anwenden. Offensichtlich möchte ich das nur für die äußersten Blöcke, nicht für die innerhalb eines verschachtelten Blocks.
Gibt es eine Möglichkeit festzustellen, ob sich der aktuelle Block in einer InnerBlocks
Definition eines übergeordneten Blocks befindet? Ich wende gerade den Wrapper im blocks.getSaveElement
Filter an.
Gibt es einen besseren Weg, dies zu tun?
Zum Kontext: In früheren gutenberg-Versionen gab es früher das Layout-Attribut, um dies zu erreichen, aber es wurde inzwischen entfernt. Ich benutze Version 3.9.0.
Dies ist eine verkürzte Version meiner Wrapper-Funktion:
namespace.saveElement = ( element, blockType, attributes ) => {
const hasBootstrapWrapper = hasBlockSupport( blockType.name, 'bootstrapWrapper' );
if (hasBlockSupport( blockType.name, 'anchor' )) {
element.props.id = attributes.anchor;
}
if (hasBootstrapWrapper) {
// HERE I NEED TO CHECK IF THE CURRENT ELEMENT IS INSIDE A INNERBLOCKS ELEMENT AND THEN APPLY DIFFERENT WRAPPER
var setWrapperInnerClass = wrapperInnerClass;
var setWrapperClass = wrapperClass;
if (attributes.containerSize) {
setWrapperInnerClass = wrapperInnerClass + ' ' + attributes.containerSize;
}
if (attributes.wrapperType) {
setWrapperClass = wrapperClass + ' ' + attributes.wrapperType;
}
const setWrapperAnchor = (attributes.wrapperAnchor) ? attributes.wrapperAnchor : false;
return (
newEl('div', { key: wrapperClass, className: setWrapperClass, id: setWrapperAnchor},
newEl('div', { key: wrapperInnerClass, className: setWrapperInnerClass},
element
)
)
);
} else {
return element;
}
};
wp.hooks.addFilter('blocks.getSaveElement', 'namespace/gutenberg', namespace.saveElement);