#block #toolbar #wordpress-gutenberg
Вопрос:
Я создаю блок с компонентом InnerBlocks. Если содержимое не добавлено во внутренние блоки (и даже с содержимым на самом деле), очень трудно всплывать на панели инструментов блоков .Я хотел бы добавить кнопку с иконкой в верхнем углу, которая покажет плавающую панель инструментов блоков. Как я могу указать, чтобы панель инструментов. block-editor-block-contextual-отображалась? Я не вижу в инспекторе никакого метода .wp-блока, который бы это делал, и документации по элементам управления блоками: Панели инструментов блоков и боковой панели настроек https://developer.wordpress.организация/редактор блоков/инструкции/учебник по блокам/элементы управления блоками-панель инструментов и боковая панель/ довольно просты, Большое спасибо
Ответ №1:
Вы можете использовать useSelect()
, чтобы определить, присутствуют ли в компоненте какие-либо блоки InnerBlocks
:
import { useSelect } from '@wordpress/data';
const hasInnerBlocks = useSelect((select) => (
select('core/block-editor').getBlock(clientId).innerBlocks.length > 0
), [clientId]);
Затем вы можете использовать hasInnerBlocks
для условного отображения всего, что вы хотите, в edit
функции:
{ !!hasInnerBlocks amp;amp; (
<BlockControls group="block">
<ToolbarGroup
// Toolbar group settings here
/>
</BlockControls>
) }
Комментарии:
1. Большое вам спасибо за быстрый ответ! Я попробую это сделать! Как вы находите эту документацию?
2. Это не совсем то, что я хотел знать. Что мне нужно, чтобы он показывал элементы управления блоками, когда я нажимаю на блок. Мой блок с внутренними блоками не показывает его, когда я нажимаю на него, мне нужно показать, что: raw.githubusercontent.com/WordPress/gutenberg/HEAD/docs/assets/…
3. Похоже, у вас выбран дочерний блок.
BlockControls
являются контекстными, в зависимости от того, какой блок вы выбрали. Это включаетInnerBlocks
в себя . Если вы выберете родительский блок, он должен отображатьBlockControls
.4. Да, но когда я нажимаю на родительский блок, он не показывает элементы управления блоками. Я добавлю свой код на github и поделюсь им здесь…
5. Вот мой код: github.com/GregoireSailland/un-block-collection