2017-09-05 42 views
2

如果我理解正确,Jekyll会将第一段作为摘录,除非您使用各种方法之一标记或手动指定一个。Jekyll Post摘抄:如何知道是否有自动生成的摘录?

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

{% if post.excerpt %} 

    {{ post.excerpt }} 

{% else %} 

    {{ post.content }} 

{% endif %} 

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

我想一个解决方案,以便去每篇文章没有摘录,并在帖子的最底部添加<!-- more -->但这是非常容易出错,因为如果我忘记我会得到错误的结果。如果我没有手动标记摘录,那么我宁愿设置默认值,然后整个帖子出现在主页上。

换一种办法,我试图从端口WordPress的化身。 WordPress的行为是没有摘录=插入整个帖子。

这有可能在哲基尔?是否有一些标志或变量,我可以在模板中检查是否手动指定片段与自动生成片段?

回答

1

我不知道有什么方法来告诉我们,如果摘录是手动或生成。也许编写一个插件来分析原始文件的前端问题可能是一个选项(但这不适用于Github Pages)。

不过,我可能有一个解决方案:

我宁愿使默认,如果我手动没有标注则摘录整个帖子出现在主页上。

按照documentation,您可以设置excerpt_separator每一页(您也可以在defaults设置一次)。

尝试设置你知道永远不会出现在您的文章的值。 如果杰基尔没有找到分离,也不会分开的,所以产生的摘录将是整个帖子。

实施例:

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

Post line 2 

生成的摘录将是整个柱:

<p>Post line 1</p> 
<p>Post line 2</p> 
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 %}