私のコンテンツタイプにはいくつかのフィールドが含まれています。 body、field_meta_tags、field_image、field_dateなど.
Node.html.twigでは、フィルターなしで、_{{ content }}
_の標準のレンダリングを{{ content|without('field_image') }}
に置き換えることができ、画像を除くすべてのコンテンツが表示されます。
この変数を別のリージョンに公開し、別のテンプレート、おそらくリージョン--hero-image.html.twigを使用して画像をレンダリングするにはどうすればよいですか?
ありがとう!
これを行う最も簡単な方法は、ブロック表示のビューを作成し、ノードIDをコンテキストフィルターとして設定することです。ビューの出力は「コンテンツ」とビューモードである必要があります。このビューモードは、テーマの独自のtwigテンプレートで設定できます。ビューモードをAdmin > Structure > Display Modes > View Modes
に追加してから、表示モードでは、表示するフィールドと使用するフォーマッターを選択できます。
ここに詳細を書いた良い記事です 、そして YouTube動画 表示モードの概要とその内容。
ビューが作成されたら、ブロック管理者にブロックを配置し、構成したコンテンツタイプのみに表示するように表示設定を設定できます。
私はここにいくつかのコードを見つけました: ノードのフィールドをさまざまな地域に表示するためのベストプラクティスは何ですか? これを[theme_name].theme
ファイルに配置しました:
function THEME_preprocess_region(&$variables) {
//TODO: change for you region name
if ($variables['region'] == 'sidebar_right') {
if ($node = \Drupal::routeMatch()->getParameter('node')) {
//TODO: change for you node type
if ($node->getType() == 'article') {
//If you need a flag for this type
$variables['is_article'] = TRUE;
//Here is your field
$variables['node_field'] = $node->get('field_descricao')->view();
}
}
}
}
と
{% if node_field %}
{{ node_field }}
{% endif %}
region--footer.html.twig
(または上記で宣言したリージョンと同等)に配置されます。明らかに、field_descricao
はレンダリングするフィールドであり、node_field
は新しい変数にしたいものです。
これは私のコンテンツへのリンクを返します(これは画像ではなくノード参照です)。完全なコンテンツをレンダリングする方法をまだ探していますが、これは以前よりも近いです。
追加の洞察は大歓迎です!
Drupal 8.3+)の一部である実験的な「Chaos Toolsブロック」モジュールを確認してください。現時点では、ドキュメントはありませんが、とても簡単です。