blocks – ¿Cómo hacer una sugerencia de gancho de tema para bloques según la región?

Pregunta:

Desde Drupal 8, con las convenciones de nomenclatura de plantillas no es posible cargar una plantilla de bloque específica de acuerdo con la región en la que se coloca ( "Se eliminó el marcado de bloque por región y la función de plantilla de bloque por región" ). Pero necesito tener un html diferente para los bloques si se colocan en una región determinada. ¿Cómo logro esto?

He pensado en usar MYMODULE_theme_suggestions_block_alter pero no sé cómo obtener la región actual.

Respuesta:

Puede obtener la región si obtiene Block Entity.

.module o archivo .theme

use Drupal\block\Entity\Block;

function MODULE_theme_suggestions_block_alter(array &$suggestions, array $variables) {
  if (!empty($variables['elements']['#id'])) {
    $block = Block::load($variables['elements']['#id']);
    $suggestions[] = 'block__' . $block->getRegion() . '__' . $variables['elements']['#id'];
  }
  /* Use this 'else if' only if you are using page_manager module and want to know which region is the block */
  else if (isset($variables['elements']['#configuration']['region'])) {
    $suggestions[] = 'block__page_' . $variables['elements']['#configuration']['region'] . '__' . end(explode(':', $variables['elements']['#plugin_id']));
  }
  return $suggestions;
}

Edición 1: Caso del módulo Cover page_manager.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım