tag-based navigation system in mediumish

Why Tags Are Important in Content Navigation

Tags are crucial for fine-grained content classification beyond broad categories. While categories help group content into major themes, tags allow readers to explore cross-cutting topics, discover related posts, and navigate your blog more intuitively.

Understanding Tags in Jekyll

In Jekyll, tags are added in a post's front matter:

tags: [liquid, jekyll, frontend]

Unlike categories, Jekyll does not automatically generate tag pages. You must manually create templates and pages to enable tag-based navigation.

Step-by-Step: Adding a Tag Navigation System to Mediumish

1. Modify Post Front Matter

Ensure all your blog posts include relevant tags. Update older posts where necessary:

---
layout: post
title: "Understanding Liquid Filters"
tags: [liquid, jekyll]
---

2. Create a Tag Template

Start by creating a tag layout to render posts by tag. Add _layouts/tag.html:

<h2>Posts Tagged: {{ page.tag }}</h2>

{% assign tag_posts = site.tags[page.tag] %}
{% for post in tag_posts %}
  <div class="post-card">
    <h3><a href="{{ post.url }}">{{ post.title }}</a></h3>
    <p>{{ post.excerpt | strip_html | truncate: 140 }}</p>
  </div>
{% endfor %}

3. Create Individual Tag Pages

Since GitHub Pages doesn’t support custom plugins, we’ll create static pages for each tag:

mkdir tag
touch tag/liquid.md

Then, inside each file, use this front matter:

---
layout: tag
tag: liquid
permalink: /tag/liquid/
---

4. Generate Tag Links in Posts

In your _includes/post-card.html or inside post.html, add tag links for each post:

{% if page.tags %}
  <p class="post-tags">
    Tags:
    {% for tag in page.tags %}
      <a href="/tag/{{ tag }}/">{{ tag }}</a>{% unless forloop.last %}, {% endunless %}
    {% endfor %}
  </p>
{% endif %}

5. Add a Global Tag Index Page (Optional)

You may want to list all tags in one central page for discoverability. Create tag/index.html:

---
layout: default
title: "All Tags"
permalink: /tag/
---

<h2>All Tags</h2>
<ul>
{% for tag in site.tags %}
  <li><a href="/tag/{{ tag[0] }}/">{{ tag[0] }} ({{ tag[1] | size }})</a></li>
{% endfor %}
</ul>

6. Style Your Tag Elements

In your CSS (e.g., main.scss), style the tag links to match the Mediumish theme aesthetics:

.post-tags a {
  background-color: #eee;
  color: #333;
  padding: 0.2em 0.6em;
  border-radius: 4px;
  margin-right: 5px;
  font-size: 0.9em;
  text-decoration: none;
}

Case Study: Using Tag Navigation to Reduce Bounce Rate

A Jekyll-based blog using the Mediumish theme added a tag navigation system to organize over 200 posts by technical topics. Within two months, internal page views per session increased by 37% and bounce rate dropped by 18%, as users engaged with related content via tag links.

Benefits of Tag-Based Navigation

  • Improves content discoverability
  • Encourages deeper engagement
  • Boosts SEO through internal linking
  • Makes large content libraries easier to explore

Conclusion

Adding a tag-based navigation system to your Mediumish Jekyll blog is a powerful way to improve user experience, encourage exploration, and enhance on-site SEO. By using simple Liquid templates and static tag pages, you can build a flexible system even on GitHub Pages.