在我的 Jekyll 博客中,我希望一些帖子没有标题。我如何修改 Jekyll 代码库以使其帖子不需要标题?
3 回答
您无需更改 jekyll 代码库即可删除标题。这可以使用具有适当液体过滤器和标签的不同布局来完成。
对于单个帖子页面,只需创建一个没有{{ page.title }}
液体标签的新布局文件(例如“_layouts/no-title-post.html”)。在您的 _posts 源文件中,将 YAML 前端设置为调用它。例如:
---
layout: no-title-post
---
请注意,在 YAML 前端内容中不需要“标题:”。如果 jekyll 需要它,该值将自动从文件名中创建。例如,“_posts/2012-04-29-a-new-post.md”会自动将其标题变量设置为“A New Post”。如果您的模板不调用标题标签,那也没关系。您可以在前面的内容中包含一个“标题:”,它根本不会显示。
您还可以在列表/索引页面中显示没有标题的页面。检查帖子布局以确定是否应显示标题。例如,要在所有页面上显示标题,除了具有“no-title-post”布局的页面,您可以执行以下操作:
{% for post in paginator.posts %}
{% if post.layout != 'no-title-post' %}
<h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
{% endif %}
<div class="postContent">
{{ post.content }}
</div>
{% endfor %}
在这种情况下,指向页面本身的链接也会被删除。如果页面需要可寻址,则必须将链接添加回其他位置。
edemundo的解决方案不再适用于 Jekyll 3。
我默认使用空标题:
defaults:
-
scope:
type: "posts"
values:
layout: "post"
title: ""
然后,您可以将标题与布局中的空字符串进行比较,例如:
{% if post.title == "" %}
{{ post.content | strip_html | truncatewords:5 }}
{% else %}
{{ post.title }}
{% endif %}
如果你喜欢自动生成标题,你可以使用 frontmatter:
---
title: ""
---
我有同样的疑问,然后我偶然发现了这个非常简单的解决方案:
{% if post.title %}
<h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
{% endif %}
然后在 post 文件本身中,您将title
变量留空:
---
layout: post
title:
---
这样,h1
如果标题为空,则不会打印。我发现这种方法对于像引号这样的帖子类型特别有用,大多数时候没有标题。