2017-09-05 2 views
2

Wenn ich richtig verstanden habe, nimmt Jekyll den ersten Absatz als Auszug, es sei denn, Sie verwenden eine der verschiedenen Methoden markieren oder manuell angeben.Jekyll Post-Auszug: Wie man weiß, ob es einen automatisch erzeugten Auszug gab?

In meinem Fall möchte ich in den Vorlagen unterscheiden können, ob es keinen Auszug war oder nicht, so kann ich diese

{% if post.excerpt %} 

    {{ post.excerpt }} 

{% else %} 

    {{ post.content }} 

{% endif %} 

effektiv effektiv tun, wenn kein Auszug die gesamte Post verwenden war. Da Jekyll automatisch Auszüge generiert, wird der Test immer fehlschlagen.

Ich nehme eine Lösung so zu jedem Beitrag gehen, die keinen Auszug hat und <!-- more --> ganz am Ende des Beitrags hinzufügen, aber das ist sehr fehleranfällig als in wenn ich vergesse, werde ich das falsche Ergebnis bekommen. Ich würde es vorziehen, den Standardwert zu machen, wenn ich einen Auszug nicht manuell markieren würde, dann erscheint der gesamte Beitrag auf der Homepage.

Um es anders auszudrücken Ich versuche, von Wordpress zu Jekyll portieren. Wordpresss Verhalten ist, dass kein Auszug = den gesamten Beitrag einfügen.

Ist das in Jekyll möglich? Gibt es ein Flag oder eine Variable, die ich in den Vorlagen überprüfen kann, ob ein Auszug manuell angegeben wurde oder nicht?

Antwort

1

Ich kenne keine Methode zu sagen, ob ein Auszug manuell oder generiert ist. Vielleicht kann es auch eine Option sein, ein Plugin zu schreiben, um die Front-Materie der Rohdatei zu analysieren (aber das würde zum Beispiel bei Github Pages nicht funktionieren).

Aber ich kann eine Lösung für dieses:

ich lieber auf die Standardeinstellung machen, wenn ich nicht manuell tat markieren ein Auszug dann der gesamte Beitrag erscheint auf der Startseite.

Nach dem documentation können Sie excerpt_separator für jede Seite eingestellt (Sie können es auch auf einmal gesetzt in defaults).

Versuchen Sie, einen Wert einzustellen, den Sie kennen wird nie in Ihren Beiträgen angezeigt. Wenn Jekyll das Trennzeichen nicht findet, wird es nicht getrennt, so der generierte Auszug wird der gesamte Beitrag sein.

Beispiel:

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

Post line 2 

Der erzeugte Auszug wird der gesamte Beitrag sein:

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

Es gibt eine alternative solution mit Flüssigkeit. Sie müssen prüfen, ob der Auszugseparator in der Post vorhanden ist:

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