Skip to content

Instantly share code, notes, and snippets.

@turnerd18
Created April 13, 2017 14:16
Show Gist options
  • Save turnerd18/b34ad2357bc0267a7c08dc6ddc82398f to your computer and use it in GitHub Desktop.
Save turnerd18/b34ad2357bc0267a7c08dc6ddc82398f to your computer and use it in GitHub Desktop.
Drupal 8 example module to override page template from within a custom module
<?php
// goes in src/Controller/HelloController.php
namespace Drupal\my_module\Controller;
use Drupal\Core\Controller\ControllerBase;
class HelloController extends ControllerBase {
public function content() {
return array(
'#type' => 'markup',
'#markup' => $this->t('Hello World!')
);
}
}
name: Overriding page module
description: "Module with a template that overrides the default page.html.twig"
package: mystuff
type: module
core: 8.x
<?php
function my_module_theme_suggestions_page(array $variables) {
$path = explode('/', trim(\Drupal::service('path.current')->getPath(), '/'));
if (isset($path[0]) && $path[0] == 'hello') {
return 'page--my-module';
}
}
function my_module_theme() {
$theme['page--my-module'] = [
'template' => 'page--my_module',
];
return $theme;
}
my_module.content:
path: '/hello'
defaults:
_controller: '\Drupal\my_module\Controller\HelloController::content'
_title: 'Hello World'
requirements:
_permission: 'access content'
{# goes in templates/page--my_module.html.twig #}
<h1 style="color:pink;">WHY DOESN'T THIS TEMPLATE GET USED!?</h1>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment