Я создал вид для узла, который показывает контент как визуализированный объект. Среди прочего, я вывожу поле тела в шаблоне ветки:
{{ content.field_body }}
Теперь я хотел бы ограничить текст до 200 символов и поставить три точки. Я протестировал три разных способа сделать это, но ничего не помогло. Проблема в том, что каждый способ также учитывает и корректирует символы HTML.
1: Я добавил формат «Trimmed» в «Manage display» => Текст ограничен, но не корректен. И у меня нет трех точек.
2: я урезал текст в шаблоне ветки. Но чтобы посчитать текст, я должен сделать это первым. Таким образом, веточка выводит текст в виде 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) . '...';
Как я могу обрезать свой текст правильно?
Спасибо большое за помощь!