Add theming suggestions to Custom Entities
Having a custom entity entityname in a module called mymodule
/**
* Implements hook_theme().
*/
function mymodule_theme() {
return [
'entityname' => [
'render element' => 'elements',
],
];
}
/**
* Prepares variables for entityname entity templates.
*/
function template_preprocess_entityname(&$variables) {
// Helpful $entityname variable for templates.
$variables['entityname'] = [];
foreach (Element::children($variables['elements']) as $key) {
$variables['entityname'][$key] = $variables['elements'][$key];
}
}
/**
* Implements hook_theme_suggestions_HOOK().
*
* Adds entityname template suggestions per view mode.
*/
function mymodule_theme_suggestions_entityname(array $variables) {
$suggestions = [];
$entityname = $variables['elements']['#entityname'];
$sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_');
$suggestions[] = 'entityname__' . $entityname->bundle() . '__' . $sanitized_view_mode;
$suggestions[] = 'entityname__' . $entityname->id() . '__' . $sanitized_view_mode;
return $suggestions;
}