Jekyll文章摘要:如何知道是否存在自动生成的摘要?

3

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

在我的情况下,我希望能够在模板中区分是否存在摘录,以便能够有效地进行操作。

{% if post.excerpt %}

    {{ post.excerpt }}

{% else %}

    {{ post.content }}

{% endif %}

如果没有摘录,则将整个文章用于显示。然而,由于Jekyll自动生成了摘录,因此测试始终会失败。

我想有一个解决方案是进入每篇没有摘录的文章,并在文章底部添加<!-- more -->,但这样非常容易出错,即使我忘记了也会得到错误的结果。我更喜欢设置默认值,如果我没有手动标记摘录,则在主页上显示整篇文章。

换句话说,我正在尝试从WordPress迁移到Jekyll。WordPress的行为是:没有摘录=插入整篇文章。

在Jekyll中是否可能实现?在模板中是否有一些标志或变量可以检查摘录是手动指定的还是自动生成的?

2个回答

2

有一种使用Liquid的替代方案。您需要检查文章中是否存在摘录分隔符:

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

2
我不知道如何区分手动和自动生成的摘录。也许编写一个插件来分析原始文件的前置元数据可以是一个选项(但这在例如Github Pages上不起作用)。
但我可能有一个解决方案:
根据文档,您可以为每个页面设置excerpt_separator(您也可以在默认值中一次性设置它)。
尝试设置一个您知道永远不会出现在您的帖子中的值。如果Jekyll找不到分隔符,则不会分隔,因此生成的摘录将是整篇文章。 例如:
---
title: Some title
excerpt_separator: "CANTFINDME!"
---
Post line 1

Post line 2

生成的摘要将是整篇文章:
<p>Post line 1</p>
<p>Post line 2</p>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接