diff options
author | Bradley Taunt <brad@bt.ht> | 2023-11-27 12:25:51 -0500 |
---|---|---|
committer | Bradley Taunt <brad@bt.ht> | 2023-11-27 12:25:51 -0500 |
commit | 14d227d46a2177a8928333894252d6299f531097 (patch) | |
tree | d41d48383d012f53823c9816a820e4e88c572c41 /posts/simple-jekyll-navigation.md | |
parent | f6eed1a8c2f4fbf91fac9edd11e50f5c0ec939a2 (diff) |
Trying to render posts all at once
Diffstat (limited to 'posts/simple-jekyll-navigation.md')
-rw-r--r-- | posts/simple-jekyll-navigation.md | 55 |
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 & 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. |