有古登堡集装箱区吗?

时间:2018-10-04 作者:Wes Modes

在web设计中,一个关键的设计元素是容器,它可能包含各种其他内容和块,并采用CSS样式。

是否有可能包含其他块的古腾堡容器块?如果是的话,我还没有找到它。

looks like 古腾堡编辑器现在支持表示嵌套块。有些人requesting section blocks. 有什么爱吗?

我可以将Columns块更改为一列,但这感觉像一个笨拙的黑客。

7 个回复
最合适的回答,由SO网友:Rick Curran 整理而成

在即将到来的Gutenberg更新中,将提供一个新的核心“Section”模块,该模块旨在为您所寻找的角色服务,我认为:

Add Section block

SO网友:chrisbergr

我很难让我的第一个容器/包装块做好行动准备。以下是我在过去几个小时学到的知识:

因为我在导入InnerBlocks 我决定使用create-guten-block 工具包。安装之后,我只需要执行npx create-guten-block. 这为我提供了相关文件的结构。现在我更改了文件src/block/block。js到以下代码:

import { registerBlockType } from \'@wordpress/blocks\';
import { InnerBlocks } from \'@wordpress/editor\';
const { __ } = wp.i18n;
registerBlockType( \'myplugin/container\', {
    title: __( \'My Plugin Container\', \'myplugin\' ),
    icon: \'universal-access-alt\',
    category: \'myplugin\',
    getEditWrapperProps: function () {
        return {
            "data-align": "full"
        };
    },
    edit: function( props ) {
        return (
            <div className={ props.className }>
                <InnerBlocks />
            </div>
        );
    },
    save: function( props ) {
        return (
            <div>
                <InnerBlocks.Content />
            </div>
        );
    },
} );
通过cli进入目录并运行npm run build 我的插件已准备就绪,并按预期工作。

我在这第一步中使用的简单css用于前端和后端:

.wp-block-myplugin-container{
    padding-top: 50px;
    padding-bottom: 50px;
    background-color: purple;
}
我在一台windows机器上使用了它,将节点更新到最新版本后,一切正常。我对结果很满意,并专注于高级设置(背景色/图像、边距、填充等)现在用于此容器。

快乐的编码!

SO网友:Ashiquzzaman Kiron

这是什么second phase of Gutenberg development 将重点放在。开发人员可以使用预定义的innerblock创建父块,以平滑用户的页面设置过程。

目前,您可以使用InnerBlocks组件。

import { registerBlockType } from \'@wordpress/blocks\';
import { InnerBlocks } from \'@wordpress/editor\';

const ALLOWED_BLOCKS = [ \'core/image\', \'core/paragraph\' ];
<InnerBlocks
    allowedBlocks={ ALLOWED_BLOCKS }
/>

registerBlockType( \'my-plugin/my-block\', {
    // ...

    edit( { className } ) {
        return (
            <div className={ className }>
                <InnerBlocks />
            </div>
        );
    },

    save() {
        return (
            <div>
                <InnerBlocks.Content />
            </div>
        );
    }
} );
还有templateLock和layouts选项来操作选项。有关更多选项,请参见-Official Doc

SO网友:Sébastien Méric

这里有两个“;“容器块”;我用过。第一个是Melonpan block container. 它有很多特点。。。但如果您只需要一个基本的容器块,下面是section block 这工作做得很好。

SO网友:Martin Kariuki

2020年10月更新-WP 5.5.1装运时带有可用作集装箱的组块。

SO网友:Danny Cooper

一些插件向Gutenberg添加了包装器/容器块。Editor Blocks 这只是一个例子。

SO网友:danihazler

我创建了一个自定义块,如下所示:

const { registerBlockType } = wp.blocks;
const { InnerBlocks } = wp.blockEditor;
const { Dashicon, TextControl, CheckboxControl } = wp.components;

registerBlockType(\'gutenberg/custom-container\', {
    title: \'Container\',
    description: \'Control the max-width of a content or section\',
    icon: \'slides\',
    category: \'layout\',

    attributes: {
        maxWidth: {
            type: \'number\',
            default: 0
        },
        collapse: {
            type: \'boolean\',
            default: false
        }
    },
    
    edit({attributes, setAttributes}) {
        const { maxWidth, collapse } = attributes;
        
        function setValue(value){ 
             const numberValue = parseInt(value);   
             setAttributes({ maxWidth: numberValue });
        }

        function checkCollapse(){                
            setAttributes({ collapse: !collapse });
        }

        return (
            <div className=\'custom-container\'>
                <div className="components-placeholder__label standard-wrapper">
                    <Dashicon icon="slides" />
                    Container
                </div>
                <div className=\'flex-between align-center\'>
                    <div>
                        <TextControl
                            className="default-label"
                            label="Width(px)" 
                            type="number" 
                            name="max-width"
                            value={maxWidth}
                            onChange={setValue}
                        />
                    </div>
                    <CheckboxControl
                        className="default-label"
                        heading="Collapse Padding"
                        checked={collapse}
                        onChange={checkCollapse}
                    />
                </div>
                <InnerBlocks />
            </div>
        );
    },
    save({attributes}) {
        const { maxWidth, collapse } = attributes;

        return (
            <div 
                className={!collapse ? 
                              \'custom-container\' : 
                              \'custom-container space-none\' 
                          }
                style={{ maxWidth: `${maxWidth}px`}}
            >
                <InnerBlocks.Content />
            </div>
        ); }
});
希望它能帮助别人。

结束

相关推荐

Css中的Current-Menu-Item类

我已经创建了一个主页(Home Page) 以及wp admin中的许多自定义链接。所有自定义链接都链接到主页的各个部分。示例:自定义链接About Us 有一个URL=#section1,在我的代码中,我将其链接到:<div id=\"section1\"> Text </div>在我的CSS中,我使用了.current-menu-item 要突出显示菜单中单击的链接,请执行以下操作:.site-header div.nav-wrap nav ul li.current-menu