Я створив подання для вузла, який відображає вміст як наданий об'єкт. Серед іншого, я виводя поле тіла в шаблон гілочки:
{{ content.field_body }}
Тепер я хотів би обмежити текст до 200 символів і поставити три крапки. Я перевірив три різні способи зробити це, але нічого не вийшло. Проблема полягає в тому, що кожен спосіб також підраховує та обрізає символи HTML.
1: Я додав формат "Обрізаний" у "Керування дисплеєм" => Текст обмежений, але не правильний. І у мене немає трьох крапок.
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) . '...';
Як правильно обрізати текст?
Велике спасибі за вашу допомогу!