2017-09-05 88 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 %}