2013-09-07 15 views

答えて

25

ジキル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を設定しない理由は考えられません。

11

フロントマントでポストレイアウトを宣言するだけでは不十分ですか? あなたのポストを使用すると、ページがポストであり、あなたは余分なロジックに

--- 
layout: post 
--- 

を追加する必要はありませんBTWページのタイプを決定するために迅速かつ汚い(非常に汚い)方法は、に構成されて確信しているpostレイアウトを使用している場合ページのパスをチェックし、あなたがそれを

{% if page.path contains '_posts' %} 
This page is a post 
{% else %} 
This page is a normal page 
{% endif %} 
+0

私のレイアウトはHTMLの約50行ですので、私は唯一のラインで異なる2つのコピーをしたくありません。しかし、情報をありがとう、あなたは私にこれを行う方法を与えてきた! – Zaz

+0

@ Josh:別のレイアウトにレイアウトを適用できます。 – jdh8

7

を確認することができますので、一般的にポストが_postsディレクトリの下にあるここに私はこの問題を解決する方法は次のとおりです。

  1. SYを作成します。 postへの投稿のレイアウト_layouts/post_layouts/main
  2. 変更からMLINK:

    {% if page.layout == 'post' %} 
        <h2>{{ page.title }}</h2> 
    {% endif %} 
    


A:

--- 
layout: post 
--- 
  • そうのような_layouts/mainでif文を追加します。もっといい方法この問題を解決するには、インクルードを使用し、@ dafiのような2つの別々のレイアウトがあるかもしれません。

  • +6

    は 'layout'は' page.layout'ですか? – davidtingsu

    +0

    @davidtingsu:修正されました。遅い応答に申し訳ありません。 – Zaz

    +0

    私はシンボリックリンクを作成しなかったので、ソロのステップ3はうまく動作します:) –

    2

    投稿にはdateという変数がありますが、ページには含まれません。

    {% if page.date %} 
        <h2>{{ page.title }}</h2> 
    {% endif %} 
    
    +0

    投稿には 'id'変数も付いています。私は個人的に 'page.id'を使ってその投稿があるかどうか確認します。 – kimbaudi

    2

    そのページまたはポストが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> 
    
    +0

    投稿された質問に答えて条件付きコンテンツを表示するためには完璧に動作します - ありがとう! (なぜこれが投票される必要があるのか​​わかりませんが、一部の人以外はSOでそれを楽しむように見えます)。 – SexxLuthor

    0

    あなたはすべてのタイプの_config.ymlデフォルトでは、タイプを設定することができます。

    defaults: 
        - scope: 
         path: "" 
         type: "pages" 
        values: 
         type: "pages" 
    
    関連する問題