Github Pages Jekyll Now站点index.html添加条件判断过滤指定标题文章
问题解决方法
失效原因
Jekyll 使用的是 Liquid 模板语言,你之前尝试的indexOf、JavaScript 风格的includes都是前端 JS 语法,无法被 Liquid 引擎识别,模板解析失败就会导致页面渲染异常、所有文章都不显示。
正确实现方案
Liquid 内置了contains操作符,专门用于判断字符串是否包含指定子串,你可以直接用该语法实现过滤需求,推荐用语义更清晰的unless(除非)逻辑编写:
--- layout: default --- <div class="posts"> {% for post in site.posts %} <!-- 仅当文章标题不包含BEINGWRITTEN时,才渲染文章卡片 --> {% unless post.title contains "BEINGWRITTEN" %} <article class="post"> <h2><a href="{{ site.baseurl }}{{ post.url }}">{{ post.title }}</a></h2> <div class="entry"> {{ post.excerpt }} </div> <a href="{{ site.baseurl }}{{ post.url }}" class="read-more">Read More</a> </article> {% endunless %} {% endfor %} </div>
可选优化
如果需要忽略大小写匹配(比如标题里的beingwritten、BeingWritten也需要被过滤),可以先把标题统一转成大写再做判断:
{% unless post.title | upcase contains "BEINGWRITTEN" %}
如果你更习惯用if写法,也可以写成:
{% if post.title contains "BEINGWRITTEN" == false %}
两种写法效果完全一致。
内容的提问来源于stack exchange,提问作者user93353
相关产品推荐
相关产品推荐

