0

過去数時間、他のすばらしい Jekyll チュートリアル サイトとともに、stackoverflow の深さを精査しましたが、この特定の問題に対する解決策をまだ見つけていません。=[

site.tags または site.categories を使用する代わりに、カテゴリ「ブログ」の下に「サブカテゴリ」という名前の独自のカスタム ラベルを作成しました。目標は、それぞれの投稿数を取得することです。私が見つけたチュートリアルは、カテゴリとタグの両方で完全に機能しましたが、カスタムフロントマターではありません.

私のサブカテゴリのいくつかは、次のように書かれています。

[design]
[gaming]
[design, gaming]

サブカテゴリを含む投稿があることを認識すると、投稿数を 1 増やすコードを探しています。私はプラグインを使用していないため、サブカテゴリの完全なリストは実際には data .yml ファイルに個別にリストされています (投稿の開始に加えて)。

これは、これを書くための私の多くの哀れな試みの1つです:

<ul class="blog__sidebar__subcategories m-t-s">
  {% for subcategory in site.data.subcategories %}

      <a class="blog__sidebar__subcategories__item" href="{{ site.baseurl }}/blog/{{ subcategory.class }}">
      <li>{{ subcategory.class }}

          {% assign counter = '0' %}
          {% assign subcat_data == site.data.subcategories %}
            {% for post in site.categories.blog  %}
            {% if subcat_data == post.subcategories %}
              {% capture counter %}{{ counter | plus: '1' }}{% endcapture %}
            {% endif %}
            {% endfor %}
            ({{ counter }})
      </li>
      </a>
  {% endfor %}
  </ul>

私が見つけた問題には、出力が常に重複している、または「デザイン、ゲーム」が 1 つのエンティティとして吐き出されていることが含まれます。これにより、次のような結果になります。

design | 6 
gamingdesign | 6 
gaming | 6 
gaming | 6

これが私の .yml ファイルの外観です (単純):

- class: design

- class: gaming

そして、投稿数を追加しようとする前の私のコード(うまくいきました!):

<ul class="blog__sidebar__subcategories m-t-s">
  {% for subcategory in site.data.subcategories %}


      <a class="blog__sidebar__subcategories__item" href="{{ site.baseurl }}/blog/{{ subcategory.class }}">
      <li>{{ subcategory.class }}</li>
      </a>
  {% endfor %}
  </ul>

また、スタックオーバーフローの社会的エチケットに誤って違反した場合はお知らせください。初投稿!百万ありがとう。

4

1 に答える 1

0

Jekyll はユーザー配列をうまく処理できません。Jekyll の既存のメカニズムに固執する方がよいと思います。

したがって、サブカテゴリにタグを使用できます。

---
layout: post
date: 2014-08-14 07:51:24 +02:00
title: Your title
categories: [ blog ]
tags:
  - design
  - gaming
---

そして、あなたのループは

{% for tag in site.tags %}

  {% comment %}+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    tag = Array [
            "design",
            Array [
              #Jekyll:Post @id="/blog/1993/02/08/index",
              #Jekyll:Post @id="/blog/1991/08/14/index"
            ]
          ]

    Values in this tag array are :
      - tag[0] -> "design"
      - tag[1] -> an Array of posts that have the design tag

    Here, we can already do a  "{{ tag [0] }} : {{ tag[1] | size }}" 
    that will give us the count for each tag's posts array.

    But if one post insn't in "blog" category but has a tag used 
    in the "blog" category, it will be counted here.

    Where must count only posts that are in the "blog" category.
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++{% endcomment %}

  {% assign counter = 0 %}

  {% for post in tag[1]  %}
    {% if post.categories contains "blog" %}
      {% assign counter = counter | plus: 1 %}
    {% endif %}
  {% endfor %}

  {% comment %}+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  Only print counter if the current tag has "blog" posts
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++{% endcomment %}
  {% if counter > 0 %}
      <p>{{ tag[0] }} : {{ counter }}</p>
  {% endif %}

{% endfor %}
于 2015-05-28T14:10:18.773 に答える