2016-09-23 3 views
0

Я бы хотел, чтобы мой пользовательский модуль Drupal 8 заставлял использовать другой шаблон для страниц, соответствующих определенному URL. Вот мой модуль структуры:Как изменить шаблон узла из модуля в Drupal 8?

/sass_edit 
    /css 
    /js 
    /template 
     builder_template.html.twig // this is the template file 
    sass_edit.module 
    ... 
    sass_edit.*.yml // various yml files 

Это содержимое builder_template.html.twig:

<h1>test</h1> 

Вот соответствующие строки кода в моем .module файле:

function sass_edit_theme_suggestions_alter(array &$suggestions, array $variables, $hook) { 

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

    if(\Drupal::currentUser()->isAuthenticated() && strpos($current_path, "/builder/") >= 0) { 
    $suggestions[] = 'builder_template'; 
    } 

    // kint($suggestions); 
    // die(); 
} 

Когда я посещаю страница, URL которой содержит /builder/, код запускается и добавляет строку builder_template в массив $suggestions. Однако, когда страница отображается, новый шаблон игнорируется. Я попытался промыть кеши, без каких-либо результатов.

Я не уверен, как действовать. Вся документация, которую я нашел, относится к добавлению предложений темы из пользовательской темы, а не к настраиваемому модулю.

Любая идея, что я делаю неправильно? Большое вам спасибо за любую помощь!

+0

Вы включили Twig Debug? Попробуйте $ suggest [] = $ hook. '__'. 'Builder_template'; У Twig Engine иногда возникали проблемы с подключением. –

ответ

1

Возможно, у вас есть опечатка в введенном вами коде, но папка, в которой у вас есть переопределения шаблонов, должна быть templates, а не template, как вы писали. Не забудьте сбросить кеши после смены имени каталога;)

Смежные вопросы