8

jekyll 静的サイト ビルダーを使用していますが、次の操作を実行するのが困難です。

{% for category in site.categories %} 
<h2 id = "{{ category[0] }}"> {{ category[0] }} </h2> 
        {% for post in site.categories[{{ category }}] %} 
                <li> <a href="{{ post.url }}"> {{ post.title }}</a></li> 
        {% endfor %} 
<a href="#{{ category[0] }}-ref">&#8617</a> 
{% endfor %} 

jekyll サイトに「test」という投稿カテゴリがあり、次のように投稿を表示できます。

{% for post in site.categories.test %} 
                <li> <a href="{{ post.url }}"> {{ post.title }}</a></li> 
{% endfor %} 

ただし、アーカイブページを自動的に構築したいのですが、これを行うには、外側のループ (すべてのカテゴリにアクセスするループ) からカテゴリを埋め込み、内側のループ内でそれを使用して、そこから投稿にアクセスする必要があります。特定のカテゴリ。最初のスニペットを希望どおりに機能させるにはどうすればよいですか?

編集:または、私が望む結果を得る別の方法はありますか?

4

3 に答える 3

15

あなたがするときfor category in site.categories

  • category[0]カテゴリ名が表示されます。
  • category[1]そのカテゴリの投稿のリストが表示されます。

これが、Liquid がハッシュの反復を処理する方法だと私は信じています。

したがって、探しているコードは次のとおりです。

{% for category in site.categories %} 
<h2 id="{{ category[0] }}-ref">{{ category[0] }}</h2>
<ul>
  {% for post in category[1] %} 
    <li><a href="{{ post.url }}">{{ post.title }}</a></li> 
  {% endfor %}
</ul>
<p><a href="#{{ category[0] }}-ref">&#8617;</a></p>
{% endfor %}

私はいくつかのマークアップの問題を自由に修正しました -<ul>...</ul>投稿リンクリストの<p>周り、最後のリンクの周り、 の後にセミコロンを追加し、上部8617の も修正しidました (一部が欠けていました-ref)。

よろしく!

于 2011-04-20T08:15:25.107 に答える
1

どうですか...

{% for category in site.categories %}
<h2 id = "{{ category[0] }}"> {{ category[0] }} </h2>
        <ul>
        {% for post in site.posts %}
            {% if post.category == category[0] %}
                 <li> <a href="{{ post.url }}"> {{ post.title }}</a></li>
            {% endif %}
        {% endfor %}
        </ul>
<a href="#{{ category[0] }}-ref">&#8617</a>
{% endfor %}

確かに、これはかなり非効率的で、余分な空白が大量に生成されますが、仕事は完了します。

【オリジナルはタグが抜けていました。それらを追加しただけです。また、空白を取り除くために、 からfor post in site.postsまでendforのすべてを 1 行にまとめることができます。]

于 2011-04-17T16:40:20.097 に答える
0
        {% for post in site.categories.category %} 
        - OR -
        {% for post in site.categories.category[0] %} 

また、kshep の例が機能しない理由もわかりません...

于 2011-04-19T15:47:52.667 に答える