4

我正在使用Liquid 模板引擎来显示一系列汇总的帖子 - 目前我有一些类似的内容:

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

页面内容包含 HTML,使用 truncatewords 可能会导致在输出中插入无效的 HTML。我不想从内容中删除所有 HTML(嵌入的视频和图像应该是可见的),理想情况下我想要的只是添加适当的结束标签。

我可以看到仅仅截断不会达到我的预期结果,所以我的问题是:如何截断我的 HTML 以便使用 Liquid 输出有效标记?

更新

一个非常具体的问题是我有一个使用颜料标记的代码示例。现在,如果截断发生在代码示例的中间,它会留下几个标签,从而弄乱页面的其余部分。我正在寻找一种在不删除所有代码示例的情况下截断这些帖子的方法 - 只是为了截断和关闭内容正文中的所有打开标签。

4

1 回答 1

6

好的,所以在网上找不到太多这样做的方法后,我利用 Nokogiri 和解析的 HTML 节点树的深度优先遍历来制作自己的解决方案。

TruncateHTML是一个简单的脚本,它允许在保留有效结构的同时截断 HTML 片段。

于 2011-04-15T19:20:45.783 回答