Fonctions pour la gestion des blocks sous Drupal 8

<?php
namespace Drupal\latrach\Database;

class

Blocks {
 
/*
   * getBlocks($cartegories)
   * Fonction pour récupérer la liste des blocs pour une liste de catégorie
   * Elle retourne la liste des blocs à utilser dans un form select:
   * $form["select"] = [
   *     '#type' => 'select',
   *     '#title' => 'Mon select',
   *     '#options' => ["" => ""] + $options,
   *   ];
   *
   */

 

public function getBlocks($cartegories) {
   
$options = [];

   

$blocks = \Drupal::service('plugin.manager.block')->getDefinitions();

    foreach (

$blocks as $record) {
      if (
in_array($record['category'], $cartegories)) {
       
$options[$record['id']] = $record['id'];
      }
    }
    return
$options;
  }

 

/*
   * getBlockById($plugin_id)
   * Fonction retourne les informations d'un bloc (id, class, categorie, provider,...)
   * en lui passant son id (plugin_id)
   *
   */

 

public function getBlockById($plugin_id) {
    return (\
Drupal::service('plugin.manager.block')->getDefinition($plugin_id));
  }

}

?>

Tags: 

Catégories: 

Share/Save