如何从 innerBlocks 中排除父块?
How to exclude parent block from innerBlocks?
我想在 WordPress Gutenberg 中创建一个 Section
块。我创建了一个部分块并将 Gutenberg <InnerBlocks>
组件用作 inner/child 块。它工作正常,但 Section
块本身显示为它的内部块列表。我想从其内部块中排除 Section
块。 <InnerBlocks>
组件有一个 属性 allowedBlocks
来指定允许作为内部块的块。但这对我没有帮助,因为我只想禁止来自内部块的 Section
块。
我怎样才能只禁止 <InnerBlocks>
中的一个特定块?
我需要像 disallowedBlocks
这样的选项,这样我就可以像
这样从 innerBlocks 列表中排除块
<InnerBlocks disallowedBlocks={['leo-block/section']} />
完整代码
;(function(wp) {
const {registerBlockType} = wp.blocks;
const {InnerBlocks} = wp.editor;
const {__} = wp.i18n;
registerBlockType('leo-block/section', {
title: __('Section'),
icon: 'grid-view',
category: 'vr-blocks',
descrition: __('Section block for manage content section'),
attributes: {
content: {
default: 'Hello World'
},
spacing: {
default: {
paddingTop: '70px',
paddingBottom: '70px',
marginTop: '0',
marginBottom: '0'
}
}
},
edit: ({attributes, setAttributes, className, isSelected}) => {
return (
<section className = {className} style={attributes.spacing}>
<div className="container">
<InnerBlocks/>
{/* TODO: Not allow "leo-block/section" */}
</div>
</section>
)
},
save: ({attributes, className}) => {
return (
<section className = {className} style={attributes.spacing}>
<div className="container">
<InnerBlocks.Content/>
</div>
</section>
)
}
})
})(window.wp)
输出截图
使用以下代码段,它会为您提供除 leo-block/section
之外的允许块列表。如果你愿意,你可以添加更多例外。你知道如何处理它
const ALLOWED_BLOCKS = wp.blocks.getBlockTypes().map(block => block.name).filter(blockName => blockName !== 'leo-block/section');
我想在 WordPress Gutenberg 中创建一个 Section
块。我创建了一个部分块并将 Gutenberg <InnerBlocks>
组件用作 inner/child 块。它工作正常,但 Section
块本身显示为它的内部块列表。我想从其内部块中排除 Section
块。 <InnerBlocks>
组件有一个 属性 allowedBlocks
来指定允许作为内部块的块。但这对我没有帮助,因为我只想禁止来自内部块的 Section
块。
我怎样才能只禁止 <InnerBlocks>
中的一个特定块?
我需要像 disallowedBlocks
这样的选项,这样我就可以像
<InnerBlocks disallowedBlocks={['leo-block/section']} />
完整代码
;(function(wp) {
const {registerBlockType} = wp.blocks;
const {InnerBlocks} = wp.editor;
const {__} = wp.i18n;
registerBlockType('leo-block/section', {
title: __('Section'),
icon: 'grid-view',
category: 'vr-blocks',
descrition: __('Section block for manage content section'),
attributes: {
content: {
default: 'Hello World'
},
spacing: {
default: {
paddingTop: '70px',
paddingBottom: '70px',
marginTop: '0',
marginBottom: '0'
}
}
},
edit: ({attributes, setAttributes, className, isSelected}) => {
return (
<section className = {className} style={attributes.spacing}>
<div className="container">
<InnerBlocks/>
{/* TODO: Not allow "leo-block/section" */}
</div>
</section>
)
},
save: ({attributes, className}) => {
return (
<section className = {className} style={attributes.spacing}>
<div className="container">
<InnerBlocks.Content/>
</div>
</section>
)
}
})
})(window.wp)
输出截图
使用以下代码段,它会为您提供除 leo-block/section
之外的允许块列表。如果你愿意,你可以添加更多例外。你知道如何处理它
const ALLOWED_BLOCKS = wp.blocks.getBlockTypes().map(block => block.name).filter(blockName => blockName !== 'leo-block/section');