I did add a custom region to my theme via my .info.yml file :

  node_col_1: 'Bloc pour colonne 1'

and in my .theme file to make it available for node template:

function starterpf_d8_preprocess_node(&$variables) {
  // Allowed view modes
  $view_mode = $variables['view_mode']; // Retrieve view mode
  $allowed_view_modes = ['full']; // Array of allowed view modes (for performance so as to not execute on unneeded nodes)

  // If view mode is in allowed view modes list, pass to starterpf_d8_add_regions_to_node()
  if(in_array($view_mode, $allowed_view_modes)) {
    // Allowed regions (for performance so as to not execute for unneeded region)
    // Liste des régions utilisées directement dans les node.html.twig
    $allowed_regions = [
    starterpf_d8_add_regions_to_node($allowed_regions, $variables);

* THEME_add_regions_to_node

function starterpf_d8_add_regions_to_node($allowed_regions, &$variables) {
  // Retrieve active theme
  $theme = \Drupal::theme()->getActiveTheme()->getName();

  // Retrieve theme regions
  $available_regions = system_region_list($theme, 'REGIONS_ALL');

  // Validate allowed regions with available regions
  $regions = array_intersect(array_keys($available_regions), $allowed_regions);

  // For each region
  foreach ($regions as $key => $region) {

    // Load region blocks
    $blocks = entity_load_multiple_by_properties('block', array('theme' => $theme, 'region' => $region));

    // Sort ‘em
    uasort($blocks, 'Drupal\block\Entity\Block::sort');

    // Capture viewable blocks and their settings to $build
    $build = array();
    foreach ($blocks as $key => $block) {
      if ($block->access('view')) {
        $build[$key] = entity_view($block, 'block');

    // Add build to region
    $variables[$region] = $build;

Then I try to apply a custom template for this region but it seem not to work,and twig doesn't provide suggestions like for block,field,etc.. My file is called : region--node_col_1.html.twig His content:

  set classes = [
    'region-' ~ region|clean_class,
{% if content %}
  <div{{ attributes.addClass(classes) }}>
    {{ content }}
{% endif %}

What do I miss ? Thanks for help

EDIT: After test, template suggestion work for custom region added to page.html.twig but not for region added to a node.html.twig...folder structure seem not to be the way,most probably a hook in .theme file.

EDIT : someone could help me for the theme_suggestions_block_alter ?

  • Are you doing a theme hook suggestion for this region in order to provide custom template names?
    – Kevin
    Apr 10, 2017 at 14:01
  • no.I use the native template suggestion of twig
    – user8753
    Apr 10, 2017 at 15:10
  • What does that mean?
    – Kevin
    Apr 10, 2017 at 15:10
  • I didn't added template suggestion via a hook theme so I get drupal/Twig suggestion like in my case : <!-- Region Custom ajoutée via le fichier .theme --> <!-- FILE NAME SUGGESTIONS: * block--poweredbydrupal.html.twig * block--system-powered-by-block.html.twig * block--system.html.twig x block.html.twig --> But perhaps it's a mistake on folder structure : because I have templates/regions folder whithout a region.html.twig like in the case of node or field...
    – user8753
    Apr 11, 2017 at 7:31
  • Those aren't region suggestions. You're inheriting region.html.twig from classy or stable.
    – Kevin
    Apr 11, 2017 at 10:53

2 Answers 2


I think your filename is incorrect. It should be:


Enable twig debugging to see the suggestions output in the HTML source, which will paint a better picture of what Drupal is expecting to see as template overrides.

  • I changed my file name to region--node_col_1.html.twig from region--node-col-1.html.twig thinking it wasn't the right way.Twig doesn't provide suggestion for my case but print drupal blocks within the region.
    – user8753
    Apr 10, 2017 at 15:13
  • No suggestions at all?
    – Kevin
    Apr 10, 2017 at 15:18
  • for region, no, for others parts like node, field or block, yes
    – user8753
    Apr 11, 2017 at 7:28

According to your previous example, you are making the region available in the node templates as in this guide: https://atendesigngroup.com/blog/making-region-content-available-node-templates-drupal-8

You can find a guide for the templates of the node here:

node--viewmode.html.twig node.html.twig

  • I already have a node template according to the content type,it's work and I can print my content region in it.
    – user8753
    Apr 10, 2017 at 15:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.