Drupal 8.で最初のステップを実行します。8。ヘッダー画像のあるサイトがあります。特定のコンテンツタイプ "Blog"で、標準のヘッダー画像をノード固有のヘッダー画像に置き換えます。そこで、コンテンツタイプ「ブログ」で画像フィールド「field_headerimage」を作成しました。また、コンテンツタイプ固有のpage.html.twigを作成することも可能にしました。 https://drupal.stackexchange.com/a)を参照してください。/141397/31981 。これは機能します。
問題:page.html.twigでfield_headerimageをレンダリングしたい。 「ノード」変数がありますが、この値はレンダリングできないようです。
Twig風の方法は、カスタムフィルターを作成することです。 Drupalらしい方法は、hook_preprocessorを使用することです。 MVCの書き換えの一般的な考え方は、ロジックをテンプレートに含めないようにすることです。 TwigフィルターDrupal 8(誰でも?).
Drupal 8 プリプロセッサ
あなたのテーマのtemplate.php:
function mytheme_preprocess_page(&$variables) {
if ( $variables['node'] ) {
$node = $variables['node'];
// Optionally limit by bundle type. How do you get a bundle in D8?
// if ( $bundle != 'blog' ) return;
// Get your image URI.
$header_image = $node->get('headerimage')->value;
// Just guessing here: not sure what to do but it may involve styles.
$header_uri = $header_image->getFileUri();
// Override the variable that normally stores the header image.
// Not sure what that would be. Look in page.html.twig
$variables['headerimage'] = $header_uri;
}
}