Jekyll Post摘录:如何知道是否有自动生成的摘录?

时间:2017-09-05 16:18:01

标签: jekyll

如果我理解正确Jekyll将第一段作为摘录,除非您使用各种方法之一标记或手动指定一个。

在我的情况下,我希望能够在模板中区分是否没有摘录,所以我可以有效地做到这一点

{% if post.excerpt %}

    {{ post.excerpt }}

{% else %}

    {{ post.content }}

{% endif %}

有效的是,如果没有摘录使用整个帖子。事实上,由于Jekyll自动生成摘录,测试总是会失败。

我想一个解决方案,所以去每个没有摘录的帖子,并在帖子的最底部添加<!-- more -->,但这很容易出错,因为如果我忘了我会得到错误的结果。我宁愿默认为如果我没有手动标记摘录,那么整个帖子就出现在主页上。

换句话说,我正试图从Wordpress移植到Jekyll。 Wordpress的行为是没有摘录=插入整个帖子。

杰基尔有可能吗?是否有一些标志或变量我可以在模板中检查是否手动指定摘录与自动生成?

2 个答案:

答案 0 :(得分:1)

我不知道任何方法可以判断摘录是手动还是生成。也许编写一个插件来分析原始文件的前端问题可能是一个选项(但这不适用于Github Pages)。

但我可能有一个解决方案:

  

如果我没有手动标记摘录,那么我更倾向于默认设置,然后整个帖子会显示在主页上。

根据documentation,您可以为每个页面设置excerpt_separator(您也可以在defaults中一次设置)。

尝试在帖子中设置一个您知道永远不会出现的值。 如果Jekyll找不到分隔符,则它不会分开,因此生成的摘录将是整个帖子。

示例:

---
title: Some title
excerpt_separator: "CANTFINDME!"
---
Post line 1

Post line 2

生成的摘录将是整个帖子:

<p>Post line 1</p>
<p>Post line 2</p>

答案 1 :(得分:0)

液体有alternative solution。如果帖子中有摘录分隔符,则需要检查:

{% if post.content contains site.excerpt_separator %}
  {{ post.excerpt }}
  <p><a href="{{ post.url | relative_url }}">Read more</a></p>
{% else %}
  {{ post.content }}
{% endif %}