I'm using Jekyll on GitHub pages, and I want to have hierarchical categories like this:
- animals -> mammals -> cats -> _posts -> housecat.md, tiger.md
- animals -> mammals -> dogs -> _posts -> poodle.md, doberman.md
- animals -> reptiles -> lizards -> _posts -> iguana.md, chameleon.md
I'd like users to be able to visit /animals
and see a listing of every post from every category. But if they go to /animals/mammals
, they'd only see mammals. If they go to /animals/mammals/cats
, then they only see cats.
I know I can do this manually by putting an index.html
file in every single directory and then looping through site.categories.mammals
or site.categories.cats
, for example.
But that seems a little bit too brute force, and I'm hoping there's a better way. If I want to change how I'm showing the listings, I'll have to change that in every single subcategory. I'll also have problems when subcategories share a name, like /ABC/XYZ/_posts/one.md
and /DEF/XYZ/_posts/two.md
.
I've tried to follow this article, which uses one main category.html
page that loops through page.category
:
{% for post in site.categories.[page.category] %}
<h2><a href=""></a></h2>
<p></p>
{% endfor %}
Then every index.html
file uses this as its layout. That almost works, but it seems limited to one category, not multiple hierarchical categories.
Is there a less brute-force approach to creating listings for hierarchical categories?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…