在主题文件中的_config.yml
中定义好菜单内容,大致如下:
// _config.yml ... nav: - text: about url: /about/index.html - text: resume url: /resume/index.html - text: contact url: /contact/index.html - text: blog url: /blog/index.html
其次,在使用到 nav 的地方,例如 layout 里面,这样写:
<nav> {% for link in site.nav %} {% assign active = nil %} {% if page.url == link.url or page.layout == link.layout %} {% assign active = 'class="active"' %} {% endif %} <li> <a {{ active }} href="/{{ link.text }}/"> {{ link.text }} </a> {{ indicator }} </li> {% endfor %} </nav>
这样写大致的意思是:
- 把配置中定义好的 nav 通过循环取出来。
- 判断当前页面的 url,如果是和 nav 中一致的,就赋予一个样式类「active」。
- 随后在模板中把定义好的参数
{{ active }}
写上去。
通过这样写的好处是可以在页面生成的时候就有这个样式,而不需要通过 Javascript 去动态添加。原理是差不多的,但这样写更加合理。