function block_content_theme_suggestions_block_alter

Implements hook_theme_suggestions_HOOK_alter() for block templates.

1 call to block_content_theme_suggestions_block_alter()
BlockTemplateSuggestionsTest::testBlockThemeHookSuggestions in core/modules/block_content/tests/src/Kernel/BlockTemplateSuggestionsTest.php
Tests template suggestions from block_content_theme_suggestions_block().

File

core/modules/block_content/block_content.module, line 193

Code

function block_content_theme_suggestions_block_alter(array &$suggestions, array $variables) {
  $suggestions_new = [];
  $content = $variables['elements']['content'];
  $block_content = $variables['elements']['content']['#block_content'] ?? NULL;
  if ($block_content instanceof BlockContentInterface) {
    $bundle = $content['#block_content']->bundle();
    $view_mode = strtr($variables['elements']['#configuration']['view_mode'], '.', '_');
    $suggestions_new[] = 'block__block_content__view__' . $view_mode;
    $suggestions_new[] = 'block__block_content__type__' . $bundle;
    $suggestions_new[] = 'block__block_content__view_type__' . $bundle . '__' . $view_mode;
    if (!empty($variables['elements']['#id'])) {
      $suggestions_new[] = 'block__block_content__id__' . $variables['elements']['#id'];
      $suggestions_new[] = 'block__block_content__id_view__' . $variables['elements']['#id'] . '__' . $view_mode;
    }
    // Remove duplicate block__block_content.
    $suggestions = array_unique($suggestions);
    array_splice($suggestions, 1, 0, $suggestions_new);
  }
  return $suggestions;
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.