如何在Markdown博客中显示单篇文章对应标题而非最新标题
解决Jekyll文章详情页标题显示问题
嘿,我懂你的困扰啦!你在首页用循环取最新文章的逻辑完全没问题,但到了单篇文章的详情页,这个循环就不适用了——它只会帮你取出全站最新的那一篇,而不是你当前正在浏览的这篇文章呀!
问题根源
在Jekyll里,不同页面的上下文是不一样的:
- 首页、博客列表页属于列表页上下文,你需要遍历
site.posts来获取文章列表; - 单篇文章的详情页属于单篇文章上下文,此时Jekyll已经把当前文章的所有数据存在
page变量里了,根本不需要再循环遍历。
正确的解决方案
在你的文章详情页模板(一般是_layouts/post.html这类文件)里,直接用下面的代码显示当前文章的标题就行:
# {{ page.title }}
如果需要自定义标题样式,比如加副标题或者调整层级,也可以这样写:
<h1 class="post-title">{{ page.title }}</h1> {% if page.subtitle %} <h2 class="post-subtitle">{{ page.subtitle }}</h2> {% endif %}
额外补充:博客列表页的正确写法
顺便提一下,你的博客列表页(blog.html)应该用循环遍历所有文章,给每篇生成跳转链接,比如:
{% for post in site.posts %} <div class="post-item"> <h2><a href="{{ post.url }}">{{ post.title }}</a></h2> <p>{{ post.excerpt | strip_html | truncatewords: 30 }}</p> <span class="post-date">{{ post.date | date: "%Y-%m-%d" }}</span> </div> {% endfor %}
这样用户点击标题链接进入详情页后,用上面的page.title就能正确显示当前文章的标题了。
内容的提问来源于stack exchange,提问作者jenjnif
相关产品推荐
相关产品推荐

