【问题标题】:Jekyll Post Excerpt: How to know if there was an auto generated excerpt?Jekyll Post Excerpt:如何知道是否有自动生成的摘录?
【发布时间】:2018-02-14 00:18:41
【问题描述】:

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

就我而言,我希望能够在模板中区分是否没有摘录,以便我可以有效地做到这一点

{% if post.excerpt %}

    {{ post.excerpt }}

{% else %}

    {{ post.content }}

{% endif %}

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

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

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

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

【问题讨论】:

    标签: jekyll


    【解决方案1】:

    我不知道有什么方法可以判断摘录是手动生成的还是生成的。也许编写一个插件来分析原始文件的前端是一种选择(但例如在 Github 页面上不起作用)。

    但我可能对此有解决方案:

    如果我没有手动标记摘录,我更愿意将其设为默认值,然后整个帖子就会出现在主页上。

    根据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>
    

    【讨论】:

      【解决方案2】:

      Liquid 有一个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 %}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-18
        • 2019-06-21
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 2013-10-03
        • 2015-12-02
        相关资源
        最近更新 更多