summaryrefslogtreecommitdiff
path: root/posts/simple-jekyll-navigation.md
diff options
context:
space:
mode:
authorBradley Taunt <brad@bt.ht>2023-11-27 12:25:51 -0500
committerBradley Taunt <brad@bt.ht>2023-11-27 12:25:51 -0500
commit14d227d46a2177a8928333894252d6299f531097 (patch)
treed41d48383d012f53823c9816a820e4e88c572c41 /posts/simple-jekyll-navigation.md
parentf6eed1a8c2f4fbf91fac9edd11e50f5c0ec939a2 (diff)
Trying to render posts all at once
Diffstat (limited to 'posts/simple-jekyll-navigation.md')
-rw-r--r--posts/simple-jekyll-navigation.md55
1 files changed, 55 insertions, 0 deletions
diff --git a/posts/simple-jekyll-navigation.md b/posts/simple-jekyll-navigation.md
new file mode 100644
index 0000000..64faf04
--- /dev/null
+++ b/posts/simple-jekyll-navigation.md
@@ -0,0 +1,55 @@
+# Simple Navigation Setup in Jekyll 3.9.0
+
+2020-09-29
+
+I have found that there is a lot of information on the internet in regards to setting up "dynamic" navigation in Jekyll. The problem I've noticed is that a good amount of these implementations are overly complex. Here is the simplest way that I tend to use when building out `nav` elements in Jekyll (3.9.0 as of this writing).
+
+## Creating the Directories &amp; Files
+
+In your Jekyll project, at the top level, you need to create a directory called `_data`. Inside this folder we will be creating a new file called `navigation.yml`. The contents of this file will contain all your navigation links and they are rendered like so:
+
+
+ - title: Home
+ url: /
+
+ - title: Articles
+ url: /articles/
+
+ - title: About
+ url: /about/
+
+
+## Dynamically Rendering the Navigation
+
+The next and final step is rendering out the navigation with a simple loop:
+
+
+ {% for item in site.data.navigation %}
+ <li>
+ <a href="{{ item.url }}"><span>{{ item.title }}</span></a>
+ </li>
+ {% endfor %}
+
+
+## Highlight Current Page
+
+It's also very easy to extend this method to add a CSS class based on whether a user is on the currently selected page or not:
+
+
+ {% for item in site.data.navigation %}
+ <li>
+ {% if item.url == page.url %}
+ <a class="active" href="{{ item.url }}"><span>{{ item.title }}</span></a>
+ {% else %}
+ <a href="{{ item.url }}"><span>{{ item.title }}</span></a>
+ {% endif %}
+ </li>
+ {% endfor %}
+
+
+
+ /* Custom styling for active class */
+ li a.active { color: red; }
+
+
+Congrats! You now have fully functional, dynamic navigation on your Jekyll site.