Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Создать блок в модуле Drupal программно

25/04/2020, by maria

Блоки в Drupal 8 являются экземплярами плагина блоков.
Менеджер блоков Drupal сканирует ваши модули на наличие классов, которые содержат аннотацию @Block.

Приведенный ниже пример кода использует аннотацию @Block вместе со свойствами «id» и «admin_label» для определения пользовательского блока.

Создайте файл src/Plugin/Block/HelloBlock.php в скелете модуля, созданном ранее, и добавьте приведенный ниже код.

Чтобы ваш сайт Drupal распознал этот новый класс, вам нужно очистить кеш.

<?php

namespace Drupal\hello_world\Plugin\Block;

use Drupal\Core\Block\BlockBase;

/**
 * Provides a 'Hello' Block.
 *
 * @Block(
 *   id = "hello_block",
 *   admin_label = @Translation("Hello block"),
 *   category = @Translation("Hello World"),
 * )
 */
class HelloBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {
    return [
      '#markup' => $this->t('Hello, World!'),
    ];
  }

}

Чтобы добавить «Hello block», вы можете перейти в Structure -> Block Layout (admin/structure/block) и нажать кнопку «Поместить блок», связанную с каждым доступным регионом.

При нажатии на кнопку «Поместить блок» для любого региона появится всплывающее диалоговое окно «Поместить блок» со списком всех доступных блоков. Чтобы быстро найти свой блок, просто используйте опцию «Фильтровать по имени блока» или используйте прокрутку мыши, чтобы найти «Привет блок». Таким образом, вы можете добавить любое количество экземпляров пользовательского блока в любом месте на вашем сайте.

Поиск проблемы

  • Имя класса и имя файла должны быть одинаковыми (класс HelloBlock и /src/Plugin/Block/HelloBlock.php). Если имя класса отличается, блок появится в списке доступных блоков, однако вы не сможете его добавить.
  • Обязательно дважды проверьте все пути и имена файлов. Ваш .php должен находиться в правильно помеченном каталоге (/src/Plugin/Block/), иначе он не будет обнаружен Drupal.
  • Если ваш блок не помещается в область без ошибок на экране или в сторожевом таймере, проверьте журналы ошибок PHP/Apache.
  • Если вашего блока нет в списке, обязательно перестройте кеши Drupal (например, drush cr).
  • Убедитесь, что соглашение об именах вашего модуля все в нижнем регистре. Некоторые пользователи сообщают, что блоки не отображаются для модулей с соглашением об именах camelCase. Например, myModule никогда не будет показывать определенные блоки, а должен быть my_module. Это было в последний раз проверено в Drupal 8.8.1

 

Примечание. Использование шаблонов Twig с пользовательскими блоками

1. Добавьте hook_theme в ваш файл .module.
Примечание: не называйте функцию тем как 'block __...' - это не передаст никаких переменных шаблонам веток. Вместо этого вы можете использовать имя модуля в качестве префикса.

2. Используйте «#theme» в массиве рендеринга в методе сборки и передавайте переменные на том же уровне, что и «#theme» - «#varname».

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.