it-swarm.com.de

Wie kann ich alle verfügbaren Blöcke programmgesteuert laden und anzeigen?

$block = Drupal\block\Entity\Block::load($block_id);
ksm($block);

Dieser Code lädt nur einen bestimmten Block. Aber wie kann ich alle verfügbaren Blöcke laden und anzeigen?

2
kadharmydeen A

Mit dem Dienst plugin.manager.block erhalten wir alle verfügbaren Blöcke Definition.

$blockManager = \Drupal::service('plugin.manager.block');

$contextRepository = \Drupal::service('context.repository');

// Get blocks definition

$definitions = $blockManager->getDefinitionsForContexts($contextRepository->getAvailableContexts());

Um Details zu einem bestimmten Block zu erhalten, können Sie den folgenden Code verwenden.

print_r($definitions['help_block']);
3
parth.k

Das Kernblockmodul, das die Methode "getFilteredDefinitions" verwendet, um die Blöcke aufzulisten

$blockManager = \Drupal::service('plugin.manager.block');
$contextRepository = \Drupal::service('context.repository');

// Get blocks definition
$definitions = $blockManager->getFilteredDefinitions('block_ui', $contextRepository->getAvailableContexts());

print_r($definitions);
0
Balaji D

Versuche dies:

$blocks = Drupal\block\Entity\Block::loadMultiple();
ksm($blocks);
0
Ynhockey