レンダリングされたエンティティとしてコンテンツを表示するノードのビューを作成しました。特に、twigテンプレートでbodyフィールドを出力します。
{{ content.field_body }}
ここで、テキストを200文字に制限し、ドットを3つ配置します。これを行う3つの方法をテストしましたが、何も機能しませんでした。問題は、それぞれの方法がHTML文字を数え、トリミングすることです。
1:「表示の管理」に「トリミング」の形式を追加しました=>テキストは制限されていますが、正しくありません。そして、私は3つのドットを持っていません。
2:twigテンプレートのテキストをトリミングしました。しかし、テキストを数えるには、最初にそれをレンダリングする必要があります。これにより、twigはテキストをHTMLとして出力します(ページにHTMLタグが表示されます!)
{% set text = content.field_body|render %}
{{ text|length > 200 ? text|slice(0, 200) ~ '...' : text }}
3:template_preprocess_node()の問題を解決しようとしました。ここでも、HTMLマークアップのカウントに関して同じ問題があります。
$body_text = $node->get('field_body')->getValue()[0]['value'];
$trimmed_text = substr($body_text, 0, 200) . '...';
テキストを正しくトリミングするにはどうすればよいですか?
ご助力ありがとうございます!