Drupal 8 - Sugestia szablonu strony według aliasu ścieżki

Napiszemy snippet, który dodaje nowe sugestie nazw szablonów do Drupala 8. Spis predefiniowanych sugestii możesz znaleźć na stronie Drupala. Chcemy mieć dwie dodatkowe zasady dotyczące sugestii szablonów stron: Propozycja szablonu według typu zawartości strony - page--typzawartosci.html.twig Dla typu treści page szablony według aliasu: url strony: /about => page--alias--about.html.twig url strony: /about/us => page--alias--about-us.html.twig

Musimy w pliku TWOJANAZWATHEME.theme napisać hooka TWOJANAZWATHEME_theme_suggestions_page_alter. Jego treść poniżej.
function YOURTHEME_theme_suggestions_page_alter(array &$suggestions, array $variables) {

   // Response codes for Access Denied and Page Not Found. 
   $system_codes = [403, 404];
   if (Drupal::request()->attributes->get('exception') && 
        $status_code = Drupal::request()->attributes->get('exception')->getStatusCode()) {
     // Add Basic Page suggestion if one of above response codes.
     if (in_array($status_code, $system_codes)) {
       $suggestions[] = 'page';
     }
   }

    if ($node = Drupal::routeMatch()->getParameter('node')) {
      $content_type = $node->bundle();
      $suggestions[] = 'page__'.$content_type;

        // for "page" content type only
        // if ($content_type == 'page'){

          if (in_array($content_type, array('webform','page'))) {

          $current_path = Drupal::service('path.current')->getPath();
          $alias = Drupal::service('path.alias_manager')->getAliasByPath($current_path);

          if ($alias != '')  {

            // break up the alias "/about/us"  => "", "about", "" ,"us"
            $parts = explode('/', $alias);

            // we only start suggestion with one "-" because first "/" will become extra "-"
            $suggestion = 'page__alias';

            foreach ($parts as $part) {
                // subsequent suggestions get appended
                $suggestion .= "_" . "$part";
            }

            // turn "-" in "_"
            $suggestion = str_replace("-", "_", $suggestion);
            $suggestions[] = $suggestion;

          }
        }
    }
}
Pozwala to tworzyć bardziej indywidualne templaty.