Как изменить длину фрагмента поста блогера, не затрагивая другой текст виджета? - PullRequest
0 голосов
/ 14 января 2019

В этом коде:

<div class='resumo'>
  <span><data:post.snippet/>
 </span>
</div>
<a class='read-more' expr:href='data:post.url'>Read More</a>

Я заменил <data:post.snippet/> на <b:eval expr='snippet(data:post.body, {length: 450, linebreaks: false, links: false})' />, чтобы попытаться увеличить длину символа в фрагменте сообщения. Это сработало, но теперь текст в других моих виджетах выделен жирным шрифтом или курсивом. Как изменить длину символа фрагмента, не затрагивая другие виджеты на моем сайте?

Отправьте фрагмент перед заменой кода:

Post snippet before replacing code:

Опубликовать фрагмент после замены кода (заголовок, текст виджета и т. Д. Изменен на курсив):

Post snippet after replacing code:

1 Ответ

0 голосов
/ 19 февраля 2019

Эта проблема возникла из-за того, что тег данных 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})' />
...