title: Drupal 8 custom theme, twig and template
body: <p>I want to display all authenticaed users in a custom template with a custom twig file.</p>
  <p>All works fine, except that the twig file is not recognized or loaded.</p>
  <p>My module name is &quot;ThemeLoader&quot;</p>
  <p>Here are my files</p>
  <p>In directory<br />
  \modules\custom\ThemeLoader</p>
  <p>file:
  ThemeLoader.info.yml</p>
  <p>+++++++++++++++++++++++++++++</p>
  <pre><code>name: ThemeLoader
  description: This module is for switching the theme dynamicaly
  package: d8_training
  type: module
  core: 8.x
  </code></pre>
  <p>+++++++++++++++++++++++++++++</p>
  <p>file:
  ThemeLoader.services.yml</p>
  <p>+++++++++++++++++++++++++++++</p>
  <pre><code>services:
    theme.negotiator.ThemeLoader:
      class: Drupal\ThemeLoader\Theme\ThemeLoaderNegociator
      tags:
        - { name: theme_negotiator, priority: 0 }
                                                                                                                                          
  </code></pre>
  <p>+++++++++++++++++++++++++++++</p>
  <p>In directory<br />
  \modules\custom\ThemeLoader\src\Theme</p>
  <p>File:
  ThemeLoaderNegociator.php</p>
  <p>+++++++++++++++++++++++++++++</p>
  <pre><code>&lt;?php
  
  
      namespace Drupal\ThemeLoader\Theme;
  
      use Drupal\Core\Routing\RouteMatchInterface;
      //use \Drupal\Core\Theme;
      class ThemeLoaderNegociator implements \Drupal\Core\Theme\ThemeNegotiatorInterface
      //class ThemeLoaderNegociator implements ThemeNegotiatorInterface
      {
  
          /**
           * @inheritDoc
           */
          public function applies(RouteMatchInterface $route_match)
          {
              // TODO: Implement applies() method.
              // Use this theme on a certain route.
            return $route_match-&gt;getRouteName() == 'mymodule2.mypage2';
          }
  
          /**
           * @inheritDoc
           */
          public function determineActiveTheme(RouteMatchInterface $route_match)
          {
              // TODO: Implement determineActiveTheme() method.
            return 'mytheme';//The theme name
          }
      }
  </code></pre>
  <p>+++++++++++++++++++++++++++++</p>
  <p>In directory
  \themes\mytheme</p>
  <p>File:
  mytheme.info.yml</p>
  <p>+++++++++++++++++++++++++++++</p>
  <pre><code>name: mytheme
  description: My custom theme
  type: theme
  core: 8.x
  base theme: false
  regions:
    header: 'Header'
    primary_menu: 'Primary menu'
    page_top: 'Page top'
    page_bottom: 'Page bottom'
    breadcrumb: 'Breadcrumb'
    content: 'Content'
  libraries:
     - mytheme/global-styling
  </code></pre>
  <p>+++++++++++++++++++++++++++++</p>
  <p>File:
  mytheme.libraries.yml</p>
  <p>+++++++++++++++++++++++++++++</p>
  <pre><code>global-styling:
    version: VERSION
    css:
      theme:
        css/style.css: {}
    js:
      js/scripts.js: {}
  </code></pre>
  <p>+++++++++++++++++++++++++++++</p>
  <p>File:
  css\style.css</p>
  <p>+++++++++++++++++++++++++++++</p>
  <pre><code>body {
      background: #99ffbb;
  }
  </code></pre>
  <p>+++++++++++++++++++++++++++++</p>
  <p>File:
  js\scripts.js</p>
  <p>+++++++++++++++++++++++++++++</p>
  <pre><code>(function($){    
      alert('hello world - jQuery version ' + $.fn.jquery);})
  (jQuery);
  </code></pre>
  <p>+++++++++++++++++++++++++++++</p>
  <p>in directory
  \themes\mytheme\templates</p>
  <p>File:
  page.html.twig</p>
  <p>+++++++++++++++++++++++++++++</p>
  <pre><code>{#
  /**
   * @file
   * Theme override to display a single page.
   *
   * The doctype, html, head and body tags are not in this template. Instead they
   * can be found in the html.html.twig template in this directory.
   *
   * Available variables:
   *
   * General utility variables:
   * - base_path: The base URL path of the Drupal installation. Will usually be
   *   &quot;/&quot; unless you have installed Drupal in a sub-directory.
   * - is_front: A flag indicating if the current page is the front page.
   * - logged_in: A flag indicating if the user is registered and signed in.
   * - is_admin: A flag indicating if the user has permission to access
   *   administration pages.
   *
   * Site identity:
   * - front_page: The URL of the front page. Use this instead of base_path when
   *   linking to the front page. This includes the language domain or prefix.
   *
   * Page content (in order of occurrence in the default page.html.twig):
   * - node: Fully loaded node, if there is an automatically-loaded node
   *   associated with the page and the node ID is the second argument in the
   *   page's path (e.g. node/12345 and node/12345/revisions, but not
   *   comment/reply/12345).
   *
   * Regions:
   * - page.header: Items for the header region.
   * - page.primary_menu: Items for the primary menu region.
   * - page.secondary_menu: Items for the secondary menu region.
   * - page.highlighted: Items for the highlighted content region.
   * - page.help: Dynamic help text, mostly for admin pages.
   * - page.content: The main content of the current page.
   * - page.sidebar_first: Items for the first sidebar.
   * - page.sidebar_second: Items for the second sidebar.
   * - page.footer: Items for the footer region.
   * - page.breadcrumb: Items for the breadcrumb region.
   *
   * @see template_preprocess_page()
   * @see html.html.twig
   */
  #}
  &lt;div class=&quot;layout-container&quot;&gt;
  
    &lt;header role=&quot;banner&quot;&gt;
      {{ page.header }}
    &lt;/header&gt;
  
    {{ page.primary_menu }}
    {{ page.secondary_menu }}
  
    {{ page.breadcrumb }}
  
    {{ page.highlighted }}
  
    {{ page.help }}
  
    &lt;main role=&quot;main&quot;&gt;
      &lt;a id=&quot;main-content&quot; tabindex=&quot;-1&quot;&gt;&lt;/a&gt;{# link is in html.html.twig #}
  
      &lt;div class=&quot;layout-content&quot;&gt;
        {{ page.content }}
      &lt;/div&gt;{# /.layout-content #}
  
      {% if page.sidebar_first %}
        &lt;aside class=&quot;layout-sidebar-first&quot; role=&quot;complementary&quot;&gt;
          {{ page.sidebar_first }}
        &lt;/aside&gt;
      {% endif %}
  
      {% if page.sidebar_second %}
        &lt;aside class=&quot;layout-sidebar-second&quot; role=&quot;complementary&quot;&gt;
          {{ page.sidebar_second }}
        &lt;/aside&gt;
      {% endif %}
  
    &lt;/main&gt;
  
    {% if page.footer %}
      &lt;footer role=&quot;contentinfo&quot;&gt;
        {{ page.footer }}
      &lt;/footer&gt;
    {% endif %}
  
  &lt;/div&gt;{# /.layout-container #}
  </code></pre>
  <p>+++++++++++++++++++++++++++++</p>
  <p>The file page.html.twig is not loàaded
  I also renamed it to mytheme.html.twig with no success
  I even removed all files in the directory themes\mytheme\templates, I got no error message.</p>
  <p>The javascript works, aned the css also.</p>
  <p>What did I miss or do wrong ?</p>