J'ai créé une vue pour un nœud qui montre le contenu comme entité rendue. Entre autres, je produis le champ corporel dans le modèle de brindille:
{{ content.field_body }}
Maintenant, je voudrais limiter le texte à 200 caractères et mettre trois points. J'ai testé trois façons différentes de le faire, mais rien n'a fonctionné. Le problème est que chaque manière compte et coupe également les caractères HTML.
1: J'ai ajouté le format "Trimmed" dans "Manage display" => Le texte est limité mais pas correct. Et je n'ai pas les trois points.
2: J'ai coupé le texte dans le modèle de brindille. Mais pour compter le texte, je dois d'abord le rendre. Ainsi, twig affiche le texte au format HTML (je vois des balises HTML sur ma page!)
{% set text = content.field_body|render %}
{{ text|length > 200 ? text|slice(0, 200) ~ '...' : text }}
3: J'ai essayé de résoudre le problème dans template_preprocess_node (). Ici, j'ai le même problème avec le comptage du balisage HTML aussi.
$body_text = $node->get('field_body')->getValue()[0]['value'];
$trimmed_text = substr($body_text, 0, 200) . '...';
Comment puis-je couper mon texte correctement?
Merci beaucoup pour votre aide!