Twigを使用して、テンプレートで使用するbodyフィールドの概要を取得するにはどうすればよいですか?


10

だから私は要約のあるテキストエリアを持っていて、コンテンツの前に要約を表示したいと思います。したがって、私が使用し{{ content.body }}た場合、テキストは要約なしで表示されます。

どうすれば要約を入手できますか?

{{ content.body.summary }} トリックをしないようです

回答:


4

THEME.themeファイルでは、次のように定義することもできます。

function THEME_preprocess_node(&$variables) {
$variables['node_teaser'] = $node_array['body'][0]['summary'];
}

そしてそれを次のように表示します:

{{ node_teaser }}

18

私がこれを解決した唯一の方法は:

サマリーの値のみをターゲットにする場合は、現在のエンティティをターゲットにできます。あなたがノード上にいるなら、これを行うことができます:

node.body.summary

段落で

paragraph.field_body.summary

また、次のように要約フロントコンテンツを取得することもできます。

content.body['#object'].body.summary

すばらしいとは言えませんが、今のところは十分です。


2
これがノードオブジェクトを使用する唯一のcontent.body方法です。これは、ビューモードで設定したbodyフィールドのレンダー配列であり、変更しなかった場合は、ビュー全体がレンダリングされるためです。
2016

1

4k4が書いた(そして2018年に更新された)ものを基にするには:

最初にフィールドのフォーマット方法を選択してから、印刷します。

1)[構造]> [コンテンツタイプ]> [コンテンツタイプ]> [ディスプレイの管理]> [ビューモード]に移動します。

2)[フォーマッタ]列で、[要約またはトリミング]を選択します。

3)保存します。

4)twigファイルでは、{{body}}を印刷するだけでかまいません(これは私にとってはうまくいきますが、間違っていれば修正して更新します)。

これは、Viewブロックでノードを使用する場合に機能し、ノードでも機能するはずです。


+1これはコンテンツをトリミングするための理想的な方法です。この場合、サイト管理者はトリム制限を設定でき、開発者の助けを必要としません。
Aryashree Pritikrishna

0

私はそれを使うだけでうまくいきました

{{ content.field_description['#items'][0].summary }}

ここで、私の説明フィールドはfield_descriptionです

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.