You are here

function twigsuggest_theme_suggestions_container in Twig Template Suggester 8

Implements hook_theme_suggestions_HOOK() for container templates.

Add suggestions, as by default none are provided.

File

./twigsuggest.module, line 106
Twig Template Suggester module hook implementations.

Code

function twigsuggest_theme_suggestions_container(array $variables) {
  $suggestions = [];
  $element = $variables['element'];

  // We cannot count on template_preprocess_container having run, so we copy
  // its logic here to provide templates for forms (has parents) or not forms.
  // Special handling for form elements.
  if (isset($element['#array_parents'])) {
    $suggestions[] = 'container__has_parent';
  }
  else {
    $suggestions[] = 'container__no_parent';
  }
  if (isset($element['#type']) && $element['#type'] != 'container') {
    $suggestions[] = 'container__' . $element['#type'];
  }
  if (isset($element['#type']) && $element['#type'] == 'container' && isset($element['children']['#type'])) {
    $suggestions[] = 'container__' . $element['children']['#type'];
  }
  if (isset($element['#type']) && $element['#type'] == 'view') {
    $suggestions[] = 'container__view__' . $element['#name'];
    $suggestions[] = 'container__view__' . $element['#name'] . '__' . $element['#display_id'];
  }
  elseif (isset($element['widget'][0]['#type']) && $element['widget'][0]['#type'] === 'managed_file') {
    $suggestions[] = 'container__file';
    $suggestions[] = 'container__file__' . $element['widget']['#field_name'];
  }

  // Additional module-specific container templates.
  if (isset($element['#group'])) {
    $suggestions[] = 'container__' . str_replace('-', '_', $element['#group']);
  }
  if (isset($element['#webform_key'])) {
    $suggestions[] = 'container__' . str_replace('-', '_', $element['#webform_key']);
  }
  return $suggestions;
}