はい、これを行うことができます。
これを実現するために、現在のページは常にpage
テンプレート内の液体変数で表されるという事実と、各投稿/ページのpage.url
属性に一意の識別子があるという事実を利用します。
つまり、ナビゲーションページを作成するにはループを使用するだけでよく、そうすることでpage.url
ループのすべてのメンバーをチェックできます。一致するものが見つかった場合、その要素を強調表示することがわかります。さあ行こう:
{% 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 %}
これは期待どおりに機能します。ただし、すべてのページをナビゲーションバーに入れたくない場合があります。ページの「グループ化」をエミュレートするには、次のようにします。
## 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 %}
これで、ページを「グループ化」できます。ページにグループを与えるには、ページYAML FrontMatterでそのページを指定する必要があります。
---
title: blah
categories: blah
group: "navigation"
---
最後に、新しいコードを使用できます!テンプレートに移動するためにナビゲーションが必要な場合は、インクルードファイルを「呼び出し」て、いくつかのページと表示するグループを渡すだけです。
<ul>
{% assign pages_list = site.pages %}
{% assign group = 'navigation' %}
{% include pages_list %}
</ul>
例
この機能は、Jekyll-Bootstrapフレームワークの一部です。ここに概説されているコードの正確なドキュメントを見ることができます:http://jekyllbootstrap.com/api/bootstrap-api.html#jbpages_list
最後に、Webサイト自体の中で実際に動作していることを確認できます。右側のナビゲーションを見ると、現在のページが緑色で強調表示されていることがわかります。強調表示されたナビゲーションリンクの例