Tak, możesz to zrobić.
Aby to osiągnąć, wykorzystamy fakt, że bieżąca strona jest zawsze reprezentowana przez zmienną ciecz: page
w szablonie, a także, że każdy post / strona ma unikalny identyfikator w swoim page.url
atrybucie.
Oznacza to, że musimy po prostu użyć pętli do zbudowania naszej strony nawigacyjnej, a robiąc to, możemy sprawdzić page.url
każdy element pętli. Jeśli znajdzie dopasowanie, wie, jak podświetlić ten element. No to ruszamy:
{% for node in site.pages %}
{% if page.url == node.url %}
<li class="active"><a href="{{node.url}}" class="active">{{node.title}}</a></li>
{% else %}
<li><a href="{{node.url}}">{{node.title}}</a></li>
{% endif %}
{% endfor %}
Działa to zgodnie z oczekiwaniami. Jednak prawdopodobnie nie chcesz, aby cała strona była na pasku nawigacyjnym. Aby emulować "grupowanie" stron, możesz coś takiego:
## Put the following code in a file in the _includes folder at: ./_includes/pages_list
{% for node in pages_list %}
{% if group == null or group == node.group %}
{% if page.url == node.url %}
<li class="active"><a href="{{node.url}}" class="active">{{node.title}}</a></li>
{% else %}
<li><a href="{{node.url}}">{{node.title}}</a></li>
{% endif %}
{% endif %}
{% endfor %}
{% assign pages_list = nil %}
{% assign group = nil %}
Teraz strony można „grupować”. Aby nadać stronie grupę, musisz określić ją na stronach YAML Front Matter:
---
title: blah
categories: blah
group: "navigation"
---
Wreszcie możesz użyć nowego kodu! Gdziekolwiek potrzebujesz nawigacji w szablonie, po prostu „wywołaj” swój plik nagłówkowy i przekaż mu kilka stron oraz grupę, którą chcesz wyświetlić:
<ul>
{% assign pages_list = site.pages %}
{% assign group = 'navigation' %}
{% include pages_list %}
</ul>
Przykłady
Ta funkcja jest częścią struktury Jekyll-Bootstrap . Możesz zobaczyć dokładną dokumentację opisanego kodu tutaj: http://jekyllbootstrap.com/api/bootstrap-api.html#jbpages_list
Wreszcie możesz zobaczyć to w akcji w samej witrynie. Wystarczy spojrzeć na nawigację po prawej stronie, a zobaczysz, że bieżąca strona jest podświetlona na zielono: Przykład podświetlonego łącza nawigacyjnego