equipmentというコンテンツタイプを作成するモジュールを作成しました。これには、複数のフィールドとフィールドコレクションが含まれます。しかし、私はそれらのフィールドでテンプレートをスタイルしたいと思います。 TwigデバッグのおかげでHTMLコメントから示唆されたように、node--equipment.html.twigと呼ばれるファイルを作成しましたテンプレートモジュールのフォルダです。残念ながらこのテンプレートは表示されないため、デフォルトのテンプレートが表示されます。
Drupal 8はTwigファイルを認識しませんか?必要なテンプレートが表示されない理由は何ですか?これを修正するにはどうすればよいですか?
モジュールの提案を認識するためには、モジュールのhook_theme()でそれを明示的に指定する必要があります。
system_theme()
たとえば、次のようになります。
// Normally theme suggestion templates are only picked up when they are in
// themes. We explicitly define theme suggestions here so that the block
// templates in core/modules/system/templates are picked up.
'block__system_branding_block' => array(
'render element' => 'elements',
'base hook' => 'block',
),
元の定義をコピーしてから、キーを変更し、ベースフックを設定します。
ようやく問題を修正しました。 Berdirが言ったように、テンプレートを認識するためには、モジュールのhook_theme()
実装で提案を明示的に指定する必要があります。私のhook_theme()
は次のようになります:
function equipment_theme(array $variables) {
$theme = array();
# Suggestion for the template
$theme['node__equipment'] = array(
'render element' => 'content',
'base hook' => 'node',
# template file
'template' => 'node--equipment',
# location of the template file
'path' => drupal_get_path('module', 'equipment') . '/templates',
);
return $theme;
}