У меня есть обычное тематическое решение для пользовательского объекта:
function module_theme ($ существующий, $ тип, $ тема, $ путь) {
возвращаться [
'обычаи' => [
'рендерить элемент' => 'элементы',
'шаблон' => 'обычаи',
],
];
}
функция template_preprocess_customentity (массив и переменные $) {
$variables['content'] = [];
...
}
function module_theme_suggestions_customentity_alter (массив & $ предложения, массив $ переменных) {
$sanitized_view_mode = strtr($variables['elements']['#view_mode'], '.', '_');
$suggestions[] = 'customentity__' . $санитизированный_просмотр_режим;
}
Единственная проблема заключается в том, что когда я хочу использовать ветку, специфичную для режима просмотра, обычай--viewmode.html.twig
, это работает, только если файл ветки находится внутри темы. Если это в модуле шаблоны
папка не подхватывается (тщательно проверил все случаи с отладкой ветки).
Так что в этом отношении он работает. Тем не менее, мне понадобится ветка в самом модуле, потому что в этом случае это не просто вопрос тематики, режим просмотра как логически, так и программно является радикально другим способом представления содержимого. Это для внутреннего использования, а не для модуля contrib, поэтому обычные ожидания пользователей не применимы.