web-dev-qa-db-fra.com

MODULE_PREPROCESS_BLOCK () Obtenez la région rendue dans drupal 8

Donc, j'essaie de porter un Drupal Module à Drupal 8, et je me lance de manière à traduire une méthode "nom_preprocess_block". Dans le code D7, il filtre de la région qu'un bloc est rendu

if ($vars['elements']['#block']->region == "my_region") {
   // Do stuff.
}

Cependant, l'objet "[" #block "] -> région" n'existe pas dans drupal 8, et je ne peux pas sembler trouver une alternative. Est-il toujours possible de faire cela ?

Merci!

1
computer-whisperer

Vous devez charger le bloc (ne vous inquiétez pas, il est déjà chargé, donc aucun impact sur la performance).

$block = entity_load('block', $variables['elements']['#id']);
$region = $block->region;
1
user21641

Donc, tout travailler ici est le code que je dois travailler.

use Drupal\block\Entity\Block;
/**
 * Implements hook_preprocess_block().
 */
function harfang_preprocess_block(&$variables) {
  $block = Block::load($variables['elements']['#id']);
  $region = $block->getRegion();

 // Add classes to all bocks in footer region.
  if($region == 'footer') {
 // Do something.
  }
}

ajout de la déclaration d'utilisation en haut et retiré les non-associés

4
BiigNiick