Усечение HTML с помощью Liquid - PullRequest
4 голосов
/ 29 марта 2011

Я использую Жидкий шаблонизатор для отображения обобщенной серии сообщений - на данный момент у меня есть что-то вроде этого:

{% for page in site.posts %}
  {{page.content | truncatewords: 100}}
{% endfor %}

Содержимое страницы содержит HTML,и использование усеченных слов может привести к тому, что неверный HTML будет вставлен в вывод.Я не хочу удалять весь HTML из контента (должны быть видны встроенные видео и изображения), и в идеале все, что я хочу, - это добавить соответствующие закрывающие теги.

Я вижу это простоусечение не приведет к ожидаемому результату, поэтому мой вопрос: как я могу усечь мой HTML для вывода правильной разметки с использованием Liquid?

Обновление

Очень специфическая проблема заключается в том, что у меня есть пример кода, размеченный с помощью пигментов.Теперь, если усечение происходит в середине примера кода, он оставляет несколько открытых тегов, запутывая оставшуюся часть страницы.Я ищу способ обрезать эти посты, не удаляя весь пример кода - просто обрезать и закрыть все открытые теги в теле контента.

1 Ответ

6 голосов
/ 15 апреля 2011

Хорошо, так что, не имея возможности найти что-то подобное в Интернете, я разработал свое собственное решение с использованием Nokogiri и первоочередного обхода проанализированного дерева узлов HTML.

TruncateHTML - это простой скрипт , который позволяет обрезать фрагмент HTML при сохранении действительной структуры.

...