8

在我的 Jekyll 博客中,我希望一些帖子没有标题。我如何修改 Jekyll 代码库以使其帖子不需要标题?

4

3 回答 3

8

您无需更改 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 %}

在这种情况下,指向页面本身的链接也会被删除。如果页面需要可寻址,则必须将链接添加回其他位置。

于 2012-04-30T01:17:58.980 回答
3

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: ""
---
于 2016-01-31T03:14:20.313 回答
1

我有同样的疑问,然后我偶然发现了这个非常简单的解决方案:

{% if post.title %}
    <h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
{% endif %}

然后在 post 文件本身中,您将title变量留空:

---
layout: post
title:      
---

这样,h1如果标题为空,则不会打印。我发现这种方法对于像引号这样的帖子类型特别有用,大多数时候没有标题。

于 2015-03-07T05:11:16.477 回答