Эта проблема возникла из-за того, что тег данных data:post.body
содержит весь контент поста, включая HTML, в отличие от тегов данных data:post.snippet
или data:post.longSnippet
, которые внутренне удаляют их.
Несмотря на то, что оператор snippet
учитывает только текстовое содержимое при определении длины, но он явно не удаляет теги HTML, связанные с этим содержимым (он предоставляет только варианты удаления тегов привязки (<a>
) через Опция links
и теги <br>
через опцию linebreaks
, но нет опций для других тегов, таких как полужирный или курсив ).
В данном конкретном случае для выделения текста выделен HTML-тег, который не может быть правильно закрыт из-за ограничения длины символа в фрагменте (на снимке экрана мы можем видеть, что жирный текст из содержимого публикации) отображается правильно, поскольку открывающие и закрывающие теги были включены в саму длину фрагмента). Из-за отсутствующего закрывающего тега, используемого для выделения текста курсором, браузер выделил курсивом весь текст после фрагмента (поскольку он не мог определить, где курсив должен быть остановлен)
Если требование к длине фрагмента не превышает 850 символов, тогда использование data:post.longSnippet
будет лучшим выбором, чем data:post.body
. Ранее data:post.longSnippet
был ограничен 300-400 символами, но этот предел был увеличен. Соединение с оператором snippet
даст вам больше контроля над длиной символа. Новый фрагмент кода будет выглядеть так:
<b:eval expr='snippet(data:post.longSnippet, {length: 650, linebreaks: false, links: false})' />