ジキルレイアウトでは、ページが通常のページか投稿かを検出する方法はありますか?私は投稿タイトルを表示したいが、ページタイトルは表示しない。このように:ジキル - ページが投稿の場合はレイアウトを変更しますか?
{% if page.is_post? %}
<h2>{{ page.title }}</h2>
{% endif %}
{{ content }}
ジキルレイアウトでは、ページが通常のページか投稿かを検出する方法はありますか?私は投稿タイトルを表示したいが、ページタイトルは表示しない。このように:ジキル - ページが投稿の場合はレイアウトを変更しますか?
{% if page.is_post? %}
<h2>{{ page.title }}</h2>
{% endif %}
{{ content }}
ジキル2.0以来、あなたはFront Matter Defaultsを使用することができます。
defaults:
-
scope:
path: "" # empty string for all files
type: posts # limit to posts
values:
is_post: true # automatically set is_post=true for all posts
その後、あなたはページがポストであるかどうかを確認するために{{ page.is_post }}
を使用することができます。
Jekyllがデフォルトでpage.type
を設定しない理由は考えられません。
フロントマントでポストレイアウトを宣言するだけでは不十分ですか? あなたのポストを使用すると、ページがポストであり、あなたは余分なロジックに
---
layout: post
---
を追加する必要はありませんBTWページのタイプを決定するために迅速かつ汚い(非常に汚い)方法は、に構成されて確信しているpost
レイアウトを使用している場合ページのパスをチェックし、あなたがそれを
{% if page.path contains '_posts' %}
This page is a post
{% else %}
This page is a normal page
{% endif %}
を確認することができますので、一般的にポストが_posts
ディレクトリの下にあるここに私はこの問題を解決する方法は次のとおりです。
post
への投稿のレイアウト_layouts/post
→_layouts/main
変更からMLINK:
{% if page.layout == 'post' %}
<h2>{{ page.title }}</h2>
{% endif %}
A:
---
layout: post
---
そうのような_layouts/main
でif文を追加します。もっといい方法この問題を解決するには、インクルードを使用し、@ dafiのような2つの別々のレイアウトがあるかもしれません。
は 'layout'は' page.layout'ですか? – davidtingsu
@davidtingsu:修正されました。遅い応答に申し訳ありません。 – Zaz
私はシンボリックリンクを作成しなかったので、ソロのステップ3はうまく動作します:) –
投稿にはdate
という変数がありますが、ページには含まれません。
{% if page.date %}
<h2>{{ page.title }}</h2>
{% endif %}
投稿には 'id'変数も付いています。私は個人的に 'page.id'を使ってその投稿があるかどうか確認します。 – kimbaudi
そのページまたはポストがpage.id
を使用するかどうかを判断する最も簡単なと最も簡単な方法:
ながら防弾ではないが、このソリューションには、追加の設定は必要ありません。そのページまたはポストは私が唯一のそのポストあれば次/前の記事へのリンクを表示することができれば、私は個人的に判断するために私のレイアウトのページでは、このメソッドを使用
{% if page.id %}
This is a post
{% endif %}
。
_layouts/defaultHTML
<!DOCTYPE html>
<html lang="en">
{% include head.html %}
<body>
{% include header.html %}
{{ content }}
<!-- If this is a post, show previous/next post links -->
{% if page.id %}
{% if page.previous.url %}
<a href="{{page.previous.url}}">{{page.previous.title}}</a>
{% endif %}
{% if page.next.url %}
<a class="button is-link ellipsis" title="{{page.previous.title}}" href="{{page.next.url}}">{{page.next.title}}</a>
{% endif %}
{% endif %}
{% include footer.html %}
</body>
</html>
投稿された質問に答えて条件付きコンテンツを表示するためには完璧に動作します - ありがとう! (なぜこれが投票される必要があるのかわかりませんが、一部の人以外はSOでそれを楽しむように見えます)。 – SexxLuthor
あなたはすべてのタイプの_config.yml
デフォルトでは、タイプを設定することができます。
defaults:
- scope:
path: ""
type: "pages"
values:
type: "pages"
私のレイアウトはHTMLの約50行ですので、私は唯一のラインで異なる2つのコピーをしたくありません。しかし、情報をありがとう、あなたは私にこれを行う方法を与えてきた! – Zaz
@ Josh:別のレイアウトにレイアウトを適用できます。 – jdh8