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;
}

 

********************************** ************************* ************************ **************** ****************** *********** ************** ************* ************ *************