drupal 8 – ¿Cómo obtengo todas las regiones disponibles en el tema actual mediante programación?

Pregunta:

Quiero la lista de los nombres de todas las regiones disponibles en el tema actual en drupal 8. ¿Cómo se hace?
¿Y es posible obtener la lista de los bloques colocados en esa región?

Respuesta:

El tema de ADMIN activo y el tema del SISTEMA activo pueden ser diferentes (de forma predeterminada, el tema de administrador activo es siete y el tema del sistema activo es bartik )

Obtenga el tema actual utilizado por el siguiente código (si está en la sección de administración, devolverá siete, de lo contrario, bartik)

$theme = \Drupal::theme()->getActiveTheme()->getName();

Como necesitamos el tema del sistema, el siguiente código hará el trabajo

$theme = \Drupal::config('system.theme')->get('default');

Y pasa el nombre del tema para obtener todas las regiones.

$system_region = system_region_list($theme, $show = REGIONS_ALL);

Esto le dará todas las regiones en formato de matriz.

$region_list =  json_decode(json_encode(system_region_list(\Drupal::config('system.theme')->get('default'),$show = REGIONS_ALL)),true);

Segunda parte de la pregunta

Obtenga los bloques en una región en particular. A continuación se muestra el fragmento de código que puede colocar los bloques en la región de contenido previo:

  $blocks = \Drupal::entityManager()
      ->getStorage('block')
      ->loadByProperties(array('theme' =>  \Drupal::config('system.theme')->get('default'),'region'=>'pre_content'));

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım