私のJekyllブログでは、いくつかの投稿にタイトルを付けないようにしたいと思います。投稿にタイトルが不要になるようにJekyllコードベースを変更するにはどうすればよいですか?
3 に答える
タイトルを削除するためにjekyllコードベースを変更する必要はありません。これは、適切な液体フィルターとタグを備えたさまざまなレイアウトを使用して行うことができます。
{{ page.title }}
個々の投稿ページについては、液体タグのない新しいレイアウトファイル(「_layouts / no-title-post.html」など)を作成するだけです。_postsソースファイルで、それを呼び出すようにYAMLフロントマターを設定します。例えば:
---
layout: no-title-post
---
ここで、「title:」はYAMLフロントマターでは必要ないことに注意してください。jekyllがそれを必要とする場合、値はファイル名から自動的に作成されます。たとえば、「_ posts / 2012-04-29-a-new-post.md」では、タイトル変数が「ANewPost」に自動的に設定されます。テンプレートがタイトルタグを呼び出さない場合、それは問題ではありません。前書きに「title:」を含めることができますが、それは単に表示されません。
リスティング/インデックスページにタイトルのないページを表示することもできます。投稿のレイアウトを確認して、タイトルを表示するかどうかを決定します。たとえば、「no-title-post」レイアウトのページを除くすべてのページにタイトルを表示するには、次のようにします。
{% for post in paginator.posts %}
{% if post.layout != 'no-title-post' %}
<h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
{% endif %}
<div class="postContent">
{{ post.content }}
</div>
{% endfor %}
その場合、ページ自体へのリンクも削除されます。ページをアドレス指定可能にする必要がある場合は、別の場所にリンクを追加し直す必要があります。
edemundoのソリューションは、Jekyll3ではすべての場合に機能しなくなりました。
デフォルトとして空のタイトルを使用します。
defaults:
-
scope:
type: "posts"
values:
layout: "post"
title: ""
次に、タイトルをレイアウト内の空の文字列と比較できます。次に例を示します。
{% if post.title == "" %}
{{ post.content | strip_html | truncatewords:5 }}
{% else %}
{{ post.title }}
{% endif %}
自動タイトル生成が好きな場合は、フロントマターとして使用できます。
---
title: ""
---
私は同じ疑問を持っていました、そして私はこの本当に単純な解決策に出くわしました:
{% if post.title %}
<h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
{% endif %}
そして、投稿ファイル自体で、title
変数を空のままにします。
---
layout: post
title:
---
このように、h1
タイトルが空の場合、は印刷されません。この方法は、ほとんどの場合タイトルがない引用符などの投稿タイプに特に便利です。