Рейтинг:0

Использование вариантов шаблонов из папки модулей

флаг lc

У меня есть обычное тематическое решение для пользовательского объекта:

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, поэтому обычные ожидания пользователей не применимы.

Рейтинг:2
флаг in

Вы должны добавить путь к вашему хуку темы следующим образом:

'my_entity__mailteaser' => [
        'рендерить элемент' => 'элементы',
        'базовый хук' => 'my_entity',
        'template' => 'my-entity--mailteaser',
        'путь' => drupal_get_path('модуль', 'asdentbase') . '/шаблоны',
      ],
флаг lc
К сожалению, если я это сделаю, он больше не найдет мой файл `theme.inc`, потому что он должен находиться в той же папке. Нет отдельных настроек пути для обоих...
флаг lc
Во всяком случае, я попытался добавить туда `theme.inc`. Нет, это не работает. `путь` меняется там, где система пытается найти прикрепленный `файл`, но не меняется, где она ищет шаблоны.
4uk4 avatar
флаг cn
`base hook` - правильное решение. Затем Drupal может найти шаблон в папке шаблонов модуля, даже не указывая на него через `шаблон` или `путь`. См. https://drupal.stackexchange.com/questions/298844/use-custom-content-entity-theme-suggestions-in-own-module.
флаг lc
Не сам по себе, а только если я добавлю дополнительный элемент темы с приклеенным к нему режимом просмотра, да. ты прав. Не могли бы вы изложить это в виде короткого ответа, чтобы я его принял? :-)
4uk4 avatar
флаг cn
@ Габор, см. связанную тему. Код в вопросе + ответ является полным решением.
флаг lc
Да, я знаю, спасибо, воспользовался. Я просто хотел быть в состоянии принять это здесь.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.