はい、できます。これを達成するために、現在のページは常にテンプレート内
の Liquid 変数で表されるという事実と、各投稿/ページの属性に一意の識別子があるという事実を利用します。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 Front Matter で指定する必要があります。
---
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 サイト内で実際に動作しているのを見ることができます。右側のナビゲーションを見ると、現在のページが緑色で強調表示されていることがわかります:強調表示されたナビゲーション リンクの例