これはおそらく簡単な質問ですが、デフォルトのページに投稿のプレビューを表示するにはどうすればよいですか?私はJekyll BootstrapテーマTomを使用しています。
関数 here を調べると、strip_htmlとtruncatewordsが見つかりました。
75ワードのプレビューテキストを含む「投稿リスト」の例を次に示します。
<ul >
{% for post in site.posts limit 4 %}
<li><span>{{ post.date | date_to_string }}</span> » <a href="{{ BASE_PATH }}{{ post.url }}">{{ post.title }}</a></li>
{{ post.content | strip_html | truncatewords:75}}<br>
<a href="{{ post.url }}">Read more...</a><br><br>
{% endfor %}
</ul>
これは少なくとも1.0.0
以降でも機能し、組み込みで簡単に使用できます。
<ul>
{% for post in site.posts %}
<li>
<a href="{{ post.url }}">{{ post.title }}</a>
<p>{{ post.excerpt }}</p>
</li>
{% endfor %}
</ul>
こちら を参照してください。
WordPressの<!--more-->
コメントアプローチが気に入ったので、次のように書きました。
module More
def more(input, type)
if input.include? "<!--more-->"
if type == "excerpt"
input.split("<!--more-->").first
elsif type == "remaining"
input.split("<!--more-->").last
else
input
end
else
input
end
end
end
Liquid::Template.register_filter(More)
投稿は次のようになります。
---
layout: post
title: "Your post title"
published: true
---
<p>This is the excerpt.</p>
<!--more-->
<p>This is the remainder of the post.</p>
その後、次のようにテンプレートで使用できます。
<!--more-->
コメントの上にあるすべて):<summary>{{ post.content | more: "excerpt" }}</summary>
<!--more-->
コメントの後のすべて):<article>{{ post.content | more: "remaining" }}</article>
excerpt
またはremaining
以外の引数は、投稿全体を表示するだけです。
これは古い質問ですが、@ Talon876の回答 here で指摘されているように、フォーマットの問題の回避策を追加したいと考えています。
各投稿の終わりに</em>,</strong> or </b>
のような終了タグを追加することはそれほどうまくいかないかもしれませんが、抜粋を表示しながらフォーマットを維持します。
例えば:
<ul >
{% for post in site.posts limit 4 %}
<li><span>{{ post.date | date_to_string }}</span> » <a href="{{ BASE_PATH }}{{ post.url }}">{{ post.title }}</a></li>
{{ post.content | strip_html | truncatewords:75}}
</em></strong> <!-- This is what does the task-->
<br>
<a href="{{ post.url }}">Read more...</a><br><br>
{% endfor %}
</ul>