Utworzyłem widok dla węzła, który pokazuje zawartość jako renderowany byt. Między innymi wyprowadzam pole ciała w szablonie gałązki:
{{ content.field_body }}
Teraz chciałbym ograniczyć tekst do 200 znaków i umieścić trzy kropki. Testowałem trzy różne sposoby, aby to zrobić, ale nic nie działało. Problem polega na tym, że każdy sposób liczy i przycina również znaki HTML.
1: Dodałem format „Przycięty” w „Zarządzaj wyświetlaniem” => Tekst jest ograniczony, ale niepoprawny. I nie mam trzech kropek.
2: Obciąłem tekst w szablonie gałązki. Ale żeby policzyć tekst, muszę go najpierw wyrenderować. W ten sposób gałązka wyświetla tekst jako HTML (widzę tagi HTML na mojej stronie!)
{% set text = content.field_body|render %}
{{ text|length > 200 ? text|slice(0, 200) ~ '...' : text }}
3: Próbowałem rozwiązać problem w template_preprocess_node (). Tutaj mam ten sam problem z liczeniem znaczników HTML.
$body_text = $node->get('field_body')->getValue()[0]['value'];
$trimmed_text = substr($body_text, 0, 200) . '...';
Jak mogę odpowiednio przyciąć tekst?
Bardzo ci dziękuje za pomoc!