Ho creato una vista per un nodo che mostra il contenuto come entità renderizzata. Tra l'altro, ho generato il campo del corpo nel modello di ramoscello:
{{ content.field_body }}
Ora, vorrei limitare il testo a 200 caratteri e mettere tre punti. Ho provato tre modi diversi per farlo, ma nulla ha funzionato. Il problema è che ogni modo conta e taglia anche i caratteri HTML.
1: Ho aggiunto il formato "Rifilato" in "Gestisci display" => Il testo è limitato ma non corretto. E non ho i tre punti.
2: ho ritagliato il testo nel modello del ramoscello. Ma per contare il testo devo prima renderlo. Quindi, ramoscello genera il testo come HTML (vedo i tag HTML sulla mia pagina!)
{% set text = content.field_body|render %}
{{ text|length > 200 ? text|slice(0, 200) ~ '...' : text }}
3: ho provato a risolvere il problema in template_preprocess_node (). Qui ho lo stesso problema anche con il conteggio del markup HTML.
$body_text = $node->get('field_body')->getValue()[0]['value'];
$trimmed_text = substr($body_text, 0, 200) . '...';
Come posso tagliare il mio testo giusto?
Grazie mille per il tuo aiuto!