diff options
author | Bradley Taunt <bt@btxx.org> | 2024-06-06 08:05:12 -0400 |
---|---|---|
committer | Bradley Taunt <bt@btxx.org> | 2024-06-06 08:05:12 -0400 |
commit | 6b742c459266b18e2b375b35205ce8a6c02f0452 (patch) | |
tree | b16fbb9a045e33dd6c97eb5ab72e6ff4d9237ea3 /posts/loop.md |
Initial commit
Diffstat (limited to 'posts/loop.md')
-rw-r--r-- | posts/loop.md | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/posts/loop.md b/posts/loop.md new file mode 100644 index 0000000..f0a5759 --- /dev/null +++ b/posts/loop.md @@ -0,0 +1,61 @@ +# Looping Through Jekyll Collections + +2022-08-12 + +I recently needed to add a couple new items to my wife's personal recipe website ([cookingwith.casa](https://cookingwith.casa)) which I hadn't touched in quite a while. The Jekyll build still worked fine, but I realized I was statically adding each `collection` by hand on the main homepage[^1]. + +Not so good. + +Of course, this wasn't difficult at all to fix. Now everything is much more "hands free" moving forward. I figured I would share the details here in the hopes that others mind find it useful. Plus, it's my blog - so I'll do what I want! + +## Looping Our Collections + +We want Jekyll to make things as streamlined as possible for us. This means that if I decide to add a new collection it will automatically render it along the others on the homepage. + +Work smart not hard! + +Let's take a look at the bare-bones collections loop: + + + + {% for collection in site.collections %} + <!-- Our code goes here --> + {% endfor %} + + + +Then we need to include an `if` statement to avoid pulling in standard `post` items (or leave this in if that is desired): + + + {% for collection in site.collections %} + {% if collection.label != 'posts' %} + {% endif %} + {% endfor %} + + +Now for my specific use case, we want to display each collection label and then list its corresponding items below that label (see the `site[collection.label]` for reference) + + + {% for collection in site.collections %} + {% if collection.label != 'posts' %} + <h2>{{ collection.label }}</h2> + <ul class="recipe-list"> + {% for item in site[collection.label] %} + <li> + <a href="{{ item.url }}">{{ item.title }}</a> + </li> + {% endfor %} + </ul> + <hr> + {% endif %} + {% endfor %} + + +That's it! Now if I plan to add any new collections down the line, I just need to include it in the `_config.yml` file and I'm set. The homepage will take care of the rest once rendered. + +Enjoy looping through your Jekyll collections! + + +## Refs + +1. Just the sections were statically rendered. All the recipes were pulled in dynamically - I'm not that insane! |