function block_content_theme_suggestions_block_alter

Same name and namespace in other branches
  1. 10 core/modules/block_content/block_content.module \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.