function block_theme_suggestions_block in Drupal 9
Same name and namespace in other branches
- 8 core/modules/block/block.module \block_theme_suggestions_block()
Implements hook_theme_suggestions_HOOK().
1 call to block_theme_suggestions_block()
- BlockTemplateSuggestionsTest::testBlockThemeHookSuggestions in core/
modules/ block/ tests/ src/ Kernel/ BlockTemplateSuggestionsTest.php - Tests template suggestions from block_theme_suggestions_block().
File
- core/
modules/ block/ block.module, line 197 - Controls the visual building blocks a page is constructed with.
Code
function block_theme_suggestions_block(array $variables) {
$suggestions = [];
$suggestions[] = 'block__' . $variables['elements']['#configuration']['provider'];
// Hyphens (-) and underscores (_) play a special role in theme suggestions.
// Theme suggestions should only contain underscores, because within
// drupal_find_theme_templates(), underscores are converted to hyphens to
// match template file names, and then converted back to underscores to match
// pre-processing and other function names. So if your theme suggestion
// contains a hyphen, it will end up as an underscore after this conversion,
// and your function names won't be recognized. So, we need to convert
// hyphens to underscores in block deltas for the theme suggestions.
// We can safely explode on : because we know the Block plugin type manager
// enforces that delimiter for all derivatives.
$parts = explode(':', $variables['elements']['#plugin_id']);
$suggestion = 'block';
while ($part = array_shift($parts)) {
$suggestions[] = $suggestion .= '__' . strtr($part, '-', '_');
}
if (!empty($variables['elements']['#id'])) {
$suggestions[] = 'block__' . $variables['elements']['#id'];
}
return $suggestions;
}