2012-06-05 6 views
5

私はジキルとRubyにはとても新しいです(まだ、非常にが興奮しています)。Jekyllのフィルタサイト。関連ポスト

プラグインを使用しないと、site.related_postsをフィルタリングする方法を見つけようとしています。

たとえば、タイトルFooとカテゴリA, Bの投稿を読んでいます。

サイトが合計3件の記事に含ま:

  1. Foo(カテゴリー:A、B)
  2. Bar(カテゴリー:A、C、D)
  3. Zoo(カテゴリー:B、F)デフォルトでは

、ジキルに私たちは、次の操作を行います。

{site.related_posts限界を投稿するための%:5%}
{%ENDFOR%}

しかしながら、上記のコードは、すべての(3)ポストを返します。

投稿には多くのカテゴリが含まれているため、カテゴリは配列にする必要があります。

どのようにコードを修正して、カテゴリが現在の投稿のカテゴリと交差するものだけを返すことができますか?

(この例では、私だけFooZooを返すようにコードを希望)

+0

デフォルトでは、「関連する投稿」は実際には最新の投稿だけです。 _config.ymlに 'lsi:true'を設定するか、' --lsi'でJekyllを実行してより高品質な結果を得てください。 –

答えて

5

私は今、この権利をテストする能力を持っていないが、このようなものはLiquid's限られた構文与えられた動作します。

{% for post in site.related_posts limit:5 %} 
    {% assign match = false %} 
    {% for category in post.categories %} 
    {% if page.categories contains category %} 
     {% assign match = true %} 
    {% endif %} 
    {% endfor %} 
    {% if match %} 
    <li><a href="{{ post.url }}">{{ post.title }}</a></li> 
    {% endif %}      
{% endfor %} 
+0

さらに良い結果が得られるように、私は 'site.related_posts limit:5'の代わりに' site.posts'を使って同じコードを試しています。どうもありがとう! –

+0

Liquidのドキュメントへのリンクがあり、目を開けました。 – kiewic

1

、あなたはCATEGORY_NAMEに関連する記事を表示したい場所にこれを追加し、各ポストはYAML前の問題でカテゴリを持っていることを確認してください:

{% for post in site.categories.CATEGORY_NAME %} 
    <li> 
     <a href="{{ post.url }}"> 
      <img src="{{ post.thumbnail }}"> 
      <p>{{ post.excerpt }}</p> 
     </a> 
    </li> 
{% endfor %}