aboutsummaryrefslogtreecommitdiff
path: root/_posts/2022-08-12-loop.md
diff options
context:
space:
mode:
authorBradley Taunt <bt@btxx.org>2024-05-25 16:14:03 -0400
committerBradley Taunt <bt@btxx.org>2024-05-25 16:16:54 -0400
commite417a818e207a6cca6e2f3c471611673ab836a62 (patch)
tree664686a365c3d1e73349b5a667fa892f46445fef /_posts/2022-08-12-loop.md
Initial commit for Jekyll testing and conversion, updated
Diffstat (limited to '_posts/2022-08-12-loop.md')
-rw-r--r--_posts/2022-08-12-loop.md62
1 files changed, 62 insertions, 0 deletions
diff --git a/_posts/2022-08-12-loop.md b/_posts/2022-08-12-loop.md
new file mode 100644
index 0000000..b38f74e
--- /dev/null
+++ b/_posts/2022-08-12-loop.md
@@ -0,0 +1,62 @@
+---
+layout: post
+title: "Looping Through Jekyll Collections"
+date: 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!
+
+
+[^1]: Just the sections were statically rendered. All the recipes were pulled in dynamically - I'm not that insane!