Je le fais en deux pages, j'ai mis en place dans Jekyll.
La première chose que je fais est la création d'une entrée à l'intérieur de _config.yml avec les informations de toutes les pages:
# this goes inside _config.yml. Change as required
navigation:
- text: What we do
url: /en/what-we-do/
- text: Who we are
url: /en/who-we-are/
- text: Projects
url: /en/projects/
layout: project
- text: Blog
url: /en/blog/
layout: post
Puis, sur ma page principale, j'ai utiliser cette information pour générer les liens de navigation. Sur chaque lien, je compare l'url du lien avec l'url de la page en cours. Si elles sont égales, la page est active. Sinon, ils ne le sont pas.
Il y a quelques cas particuliers: tous les articles du blog doit mettre en évidence le "blog" de lien, et les premières pages (anglais et espagnol) ne doivent pas présenter à la barre de navigation. Pour les deux cas, je m'appuie sur le fait que les messages de blog et les pages de couverture ont des dispositions spécifiques (notez que le "Blog" et "Projet" liens sur le yaml ont un paramètre supplémentaire appelé "mise en page")
Le code de navigation est généré comme ceci:
{% unless page.layout == 'front' %}
<ul class="navigation">
{% for link in site.navigation %}
{% assign current = nil %}
{% if page.url == link.url or page.layout == link.layout %}
{% assign current = 'current' %}
{% endif %}
<li class="{% if forloop.first %}first{% endif %} {{ current }} {% if forloop.last %}last{% endif %}">
<a class="{{ current }}" href="{{ link.url }}">{{ link.text }}</a>
</li>
{% endfor %}
</ul>
{% endunless %}
J'ai encore souvenir de l'ajout d'une entrée à _config.yaml à chaque fois que j'ajoute une nouvelle page, puis redémarrez Jekyll, mais il arrive très rarement maintenant.
Je pense que la navigation yaml pourrait aller à l'intérieur d'un _include appelé "navigation" ou quelque chose de similaire, mais je n'ai pas essayé d'utiliser yaml à l'intérieur donc je ne sais pas si cela va fonctionner. Dans mon cas, depuis que j'ai un site multilingue, il est plus facile d'avoir tout à l'intérieur de config (traductions manquantes sont plus faciles à repérer)
J'espère que cette aide.