Reputation: 353
I want to display all authenticaed users in a custom template with a custom twig file.
All works fine, except that the twig file is not recognized or loaded.
My module name is "ThemeLoader"
Here are my files
In directory
\modules\custom\ThemeLoader
file: ThemeLoader.info.yml
+++++++++++++++++++++++++++++
name: ThemeLoader
description: This module is for switching the theme dynamicaly
package: d8_training
type: module
core: 8.x
+++++++++++++++++++++++++++++
file: ThemeLoader.services.yml
+++++++++++++++++++++++++++++
services:
theme.negotiator.ThemeLoader:
class: Drupal\ThemeLoader\Theme\ThemeLoaderNegociator
tags:
- { name: theme_negotiator, priority: 0 }
+++++++++++++++++++++++++++++
In directory
\modules\custom\ThemeLoader\src\Theme
File: ThemeLoaderNegociator.php
+++++++++++++++++++++++++++++
<?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->getRouteName() == 'mymodule2.mypage2';
}
/**
* @inheritDoc
*/
public function determineActiveTheme(RouteMatchInterface $route_match)
{
// TODO: Implement determineActiveTheme() method.
return 'mytheme';//The theme name
}
}
+++++++++++++++++++++++++++++
In directory \themes\mytheme
File: mytheme.info.yml
+++++++++++++++++++++++++++++
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
+++++++++++++++++++++++++++++
File: mytheme.libraries.yml
+++++++++++++++++++++++++++++
global-styling:
version: VERSION
css:
theme:
css/style.css: {}
js:
js/scripts.js: {}
+++++++++++++++++++++++++++++
File: css\style.css
+++++++++++++++++++++++++++++
body {
background: #99ffbb;
}
+++++++++++++++++++++++++++++
File: js\scripts.js
+++++++++++++++++++++++++++++
(function($){
alert('hello world - jQuery version ' + $.fn.jquery);})
(jQuery);
+++++++++++++++++++++++++++++
in directory \themes\mytheme\templates
File: page.html.twig
+++++++++++++++++++++++++++++
{#
/**
* @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
* "/" 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
*/
#}
<div class="layout-container">
<header role="banner">
{{ page.header }}
</header>
{{ page.primary_menu }}
{{ page.secondary_menu }}
{{ page.breadcrumb }}
{{ page.highlighted }}
{{ page.help }}
<main role="main">
<a id="main-content" tabindex="-1"></a>{# link is in html.html.twig #}
<div class="layout-content">
{{ page.content }}
</div>{# /.layout-content #}
{% if page.sidebar_first %}
<aside class="layout-sidebar-first" role="complementary">
{{ page.sidebar_first }}
</aside>
{% endif %}
{% if page.sidebar_second %}
<aside class="layout-sidebar-second" role="complementary">
{{ page.sidebar_second }}
</aside>
{% endif %}
</main>
{% if page.footer %}
<footer role="contentinfo">
{{ page.footer }}
</footer>
{% endif %}
</div>{# /.layout-container #}
+++++++++++++++++++++++++++++
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.
The javascript works, aned the css also.
What did I miss or do wrong ?
Upvotes: 0
Views: 2604
Reputation: 132
I'm not sure here what kind of issue you may have. I have created all the files to try debugging this and everything worked fine to me.
I would suggest you to do the following to debug in future, on your settings.php file add the following:
$settings['container_yamls'][] = DRUPAL_ROOT . '/sites/default/services.yml';
Then on your services.yml file, you could duplicate and rename the default.services.yml file, change the following:
debug: true
auto_reload: true
cache: false
Once you do all of the above, if you have drush installed clear cache by doing:
drush cr
You will start seeing helpful extracts on your devtools, which will aide you during your development.
Upvotes: 1