Drupal 8 создайте переопределение шаблона для блока представления в пользовательском модуле
Вопрос:
В Drupal 8: Как добавить переопределение шаблона для блока представления и разместить этот файл ветки в пользовательском модуле - не в моей теме?
Дополнительная Информация:
Я уже создал пользовательский модуль, который создает тип контента, импортирует данные из RSS-канала и генерирует узлы в созданный им тип контента. Модуль также содержит файл представления YML, так что представление для моего типа контента создается, когда модуль установлен. В представлении есть только один дисплей, который представляет собой блок.
Я хотел бы создать переопределение шаблона для блока и разместить переопределение шаблона в модуле (а не в моей теме). Переопределение шаблона выполняет следующие действия:
- Добавляет соответствующие классы в блок
- Добавляет изображение рядом с заголовком блока, когда отображается заголовок
- Обертывает {{содержимое}} в div с соответствующим классом
- Загружает библиотека пользовательского модуля для применения CSS
Цель состоит в том, чтобы иметь модуль, который может установить нетехнический специалист, назначить блок нужному региону и получить все шаблоны, CSS, JS и т. Д., Извлеченные из модуля. Я не хочу, чтобы им приходилось копировать шаблон в свою тему и т. Д. Я хочу, чтобы блок был представлением, чтобы пользователь мог использовать пользовательский интерфейс представлений для внесения любых желаемых обновлений в поля блока представления, количество возвратов и т.д.
Я смог заставить Drupal распознать шаблон с помощью функции hook_theme_registry_alter(), но переменные из блока равны нулю. И {{метка}}, и {{содержимое}} равны нулю, когда я включаю их в переопределение шаблона.
Вот код hook_theme_registry_alter():
/**
* Implements hook theme_registry_alter
**/
function MYMODULE_theme_registry_alter(&$theme_registry){
$theme_registry['block__views_block__MYVIEW_block_1']['path'] = drupal_get_path('module','MYMODULE') . '/templates/';
$theme_registry['block__views_block__MYVIEW_block_1']['template'] = 'block--views-block--MYVIEW-block-1';
}
Следует отметить, что когда я использовал функцию hook_theme_registry_alter() для переопределения шаблона страницы просмотра в своем модуле, это сработало. Я предполагаю, что переменные были взяты из псевдонима страницы.
Пожалуйста, включите подробную информацию, потому что Я все еще изучаю различные крючки и то, как передаются переменные. Заранее спасибо!
1 answers
Чтобы получить те же переменные, что и шаблон блока, добавьте его в качестве базового крючка:
/**
* Implements hook_theme().
*/
function mymodule_theme() {
return [
'block__views_block__MYVIEW_block_1' => [
'render element' => 'elements',
'base hook' => 'block',
],
];
}
Теперь вы можете поместить шаблон ветки в mymodule/templates/
, путь и имя файла будут обнаружены автоматически.