Ich habe eine Ansicht für einen Knoten erstellt, in der der Inhalt als gerenderte Entität angezeigt wird. Unter anderem gebe ich das Körperfeld in der Zweigvorlage aus:
{{ content.field_body }}
Jetzt möchte ich den Text auf 200 Zeichen beschränken und drei Punkte setzen. Ich habe drei verschiedene Möglichkeiten getestet, aber nichts hat funktioniert. Das Problem ist, dass jeder Weg auch die HTML-Zeichen zählt und trimmt.
1: Ich habe das Format "Beschnitten" in "Anzeige verwalten" hinzugefügt => Der Text ist begrenzt, aber nicht korrekt. Und ich habe die drei Punkte nicht.
2: Ich habe den Text in der Zweigvorlage zugeschnitten. Aber um den Text zu zählen, muss ich ihn zuerst rendern. Dabei gibt twig den Text als HTML aus (ich sehe HTML-Tags auf meiner Seite!)
{% set text = content.field_body|render %}
{{ text|length > 200 ? text|slice(0, 200) ~ '...' : text }}
3: Ich habe versucht, das Problem in template_preprocess_node () zu lösen. Hier habe ich das gleiche Problem beim Zählen des HTML-Markups.
$body_text = $node->get('field_body')->getValue()[0]['value'];
$trimmed_text = substr($body_text, 0, 200) . '...';
Wie kann ich meinen Text richtig zuschneiden?
Vielen Dank für Ihre Hilfe!