我正在使用Liquid模板引擎来显示一系列摘要的帖子 - 目前我还有以下几点:
{% for page in site.posts %}
{{page.content | truncatewords: 100}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
页面内容包含HTML,使用truncatewords可能导致无效的HTML插入输出中.我不想从内容中删除所有HTML(嵌入的视频和图像应该是可见的),理想情况下我想要的是添加适当的结束标记.
我可以看到,仅截断不会达到我预期的结果,所以我的问题是:如何截断我的HTML以便使用Liquid输出有效的标记?
更新
一个非常具体的问题是我有一个使用Pigments标记的代码示例.现在,如果截断发生在代码示例的中间,它会打开几个标记,弄乱页面的其余部分.我正在寻找一种方法来截断这些帖子而不删除所有代码示例 - 只是截断并关闭内容正文中的所有打开标记.
好吧,所以在无法在网上找到这么多的方法之后,我利用Nokogiri和深度优先遍历解析的HTML节点树来制作我自己的解决方案.
TruncateHTML是一个简单的脚本,它允许截断HTML片段,同时保留有效的结构.
| 归档时间: |
|
| 查看次数: |
1667 次 |
| 最近记录: |