web-dev-qa-db-ja.com

ジキルはカテゴリごとに投稿を表示します

これに頭をかいてください-感謝します。

すべてのジキル投稿のリストをカテゴリ別に整理して表示したい。 Line 3が正しくないことは知っていますが、それがどうあるべきかわかりません。何か案は?ありがとう!

{% for category in site.categories %}
    <h3>{{ category | first }}</h3>
    {% for post in page.categories.category %}
      {{ post.title }}<br>
    {% endfor %}            
{% endfor %}
42
Alex G

とった!個々の投稿をリストする前に中間投稿ループが必要でした

<ul>
{% for category in site.categories %}
  <li><a name="{{ category | first }}">{{ category | first }}</a>
    <ul>
    {% for post in category.last %}
      <li><a href="{{ post.url }}">{{ post.title }}</a></li>
    {% endfor %}
    </ul>
  </li>
{% endfor %}
</ul>
66
Alex G

fyi、誰かが1つのカテゴリの投稿をリストしたいだけなら、これは機能します(カテゴリが投稿のリストを返すので上記の例とは異なります...

<p>Posts in category "basic" are:</p>

<ul>
  {% for post in site.categories.basic %}
    {% if post.url %}
        <li><a href="{{ post.url }}">{{ post.title }}</a></li>
    {% endif %}
  {% endfor %}
</ul>
19
tim

現在、これに使用できる公式プラグインがあります。 jekyll-archives .

それを利用するために、

jekyll-archivesGemfileおよび_config.ymlファイルに追加します。

必要に応じて、次のような構成を追加します。

jekyll-archives:
  enabled: all
  layouts:
    year: archive/year
    month: archive/month
    day: archive/day
    tag: archive/tag
    category: archive/category
  permalinks:
    year: '/:year/'
    month: '/:year/:month/'
    day: '/:year/:month/:day/'
    tag: '/tags/:name/'
    category: '/category/:name/'

layoutsは、archive typeに応じて以下のページ属性を利用できます。

  • page.type-(次のいずれか。yearmonthdaytagcategory
  • page.title-(typeタグとカテゴリでのみ使用可能。それ以外の場合はNil
  • page.date-(page.typeに応じて、日付と月のフィールドを解析する必要があります)
  • page.posts-(このアーカイブの投稿のリスト)

以下は、年に基づいたアーカイブのサンプルレイアウトです。

<h1>Archive of posts from {{ page.date | date: "%Y" }}</h1>
<ul class="posts">
{% for post in page.posts %}
  <li>
    <span class="post-date">{{ post.date | date: "%b %-d, %Y" }}</span>
    <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
  </li>
{% endfor %}
</ul>
2
Raja Anbazhagan
<h5>Categories</h5>
{% for category in site.categories %}
    {% assign cat = category[0] %}
    <h6><a href="#">{{ cat }}</a></h6>
    {% for post in site.categories[cat] %}
        <a href="{{ post.url }}">{{ post.title }}</a> <small>{{ post.date }}</small>
    {% endfor %}
{% endfor %}
1
Ilan Olkies

ソートを使用する答えは次のとおりです(便利です!)。

{% comment %}
#
#  Change date order by adding '| reversed'
#  To sort by title or other variables use {% assign sorted_posts = category[1] | sort: 'title' %}
#
{% endcomment %}
{% assign sorted_cats = site.categories | sort %}
{% for category in sorted_cats %}
{% assign sorted_posts = category[1] | reversed %}
<h2 id="{{category[0] | uri_escape | downcase }}">{{category[0] | capitalize}}</H2>
<ul>
  {% for post in sorted_posts %}
    <li><a href="{{ site.url }}{{ site.baseurl }}{{  post.url }}">{{  post.title }}</a></li>
  {% endfor %}
</ul>
{% endfor %}

これは私のものではなく、 here から取得したものです。

0
pgr

すぐに正確な構文を思い出すことはできませんが、次のコードのようにカテゴリ名を取得して、各カテゴリの投稿を取得できるようにする必要があります...

{% for category in site.categories %}

   {% assign cat_name = category[0] %}

  {% for post in site.categories.cat_name %}

       ...

  {% endfor%}

 {% endfor %}
0
jtb