我是Jekyll的新手,我正在一个网站上工作,我想要一个使用类别名称作为链接文本的导航菜单。但是,我不希望猫的名字按字母或顺序排序,但顺序不同。我唯一能想到的是,在配置文件中定义一个哈希,如下所示:
cats:
"a": "dogs"
"b": "cats"
"c": "spiders"
"d": "jiraffes"
然后为导航我有这样的事情(请不要嘲笑这个noobie,他):
<ul>{% for cat_hash in site.cats %}{% for cat in cat_hash %}{% for page in site.pages %}{% if cat[1] == page.category %}
<li><a href="{{ page.url | prepend: site.baseurl }}">{{ page.category }}</a></li>{% endif %}{% endfor %}{% endfor %}{% endfor %}
</ul>
现在,由于我在每个类别下都有很多页面,我想稍微自动化一下这个过程,所以我试图在前面的事情中使用液体代码:
---
layout: default
category: {{ site.cats["a"] }}
---
但当然这不起作用。我已搜索过SO并找到了使用插件的解决方案,但我不能在此网站上使用插件。有人有什么想法吗?我想做的是:
提前谢谢。
答案 0 :(得分:2)
可能的解决方案:
订购不是问题,我认为_config.yml
似乎是这样做的。
问题是自动将页面与类别匹配,而不必在页面的前面写入类别名称。
我的想法是将类别与文件夹匹配。 cats
文件夹中的任何文件都将被视为cats
类别的一部分,然后会显示在右侧菜单中。
--cats
|--cat1.md
|--cat2.md
|--
--dogs
|--dog1.md
|--dog2.md
|--
--spiders
|--spider1.md
然后可以稍微更改_config.yml
以使文件夹名称与菜单中的显示匹配。
categories:
dogs:
display: Doggies
cats:
display: I love catz
spiders:
display: Spiders
现在,我们可以轻松地将页面与类别匹配,并在菜单中显示所有内容:
{% for cat in site.categories %}
<h2>{{ cat[1].display }}</h2>
<ul>
{% for page in site.pages %}
{% if page.dir contains cat[0] %}
<li><a href="{{ page.url | prepend: site.baseurl }}">{{ page.title }}</a></li></li>
{% endif %}
{% endfor %}
</ul>
{% endfor %}
Etvoilà!