如何使用 Jekyll / Liquid 创建主题菜单
How to create an topic menu with Jekyll / Liquid
我正在尝试创建一个大纲来模拟直接 link 到 post 的菜单。
这种结构类似于主题的帮助手册或书籍章节的结构。
问题是如何做,我想在config.yml中创建结构,为每个主题定义一个标签和标题,并递归检查是否有sub-topic。我认为这不是最正确的方法,但我生成了这样一个结构:
当我遍历这个数组时,打印标题和相应的 posts 这些标签?
或者有更好的方法吗?
Obs .: 这将在 GitHub,所以我不能使用插件。
如果你不能使用插件,我知道,实现这一点的唯一方法是循环遍历列表,每个级别一个循环。这是一个例子:
<ul class="topics">
{% for topic in site.topics %}
<li>
<a title="{{topic.title}}" href="/tags/{{topic.tag}}">{{topic.title}}</a>
{% if topic.subtopics %}
<ul class="subtopics">
{% for subtopic in topic.subtopics %}
<li>
<a title="{{subtopic.title}}" href="/tags/{{subtopic.tag}}">{{subtopic.title}}</a>
<!-- add another for if you have another level, and so on... -->
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
<ul>
我不认为你应该害怕性能,因为这里你编译一次"slow",服务很多次"fast"。
P.s.
如果你不需要从配置文件生成菜单,你总是可以直接将它写在 html 文件中,例如_includes/navigation.html
然后使用 {% include navigation.html %}
.
从布局中包含它
我正在尝试创建一个大纲来模拟直接 link 到 post 的菜单。 这种结构类似于主题的帮助手册或书籍章节的结构。
问题是如何做,我想在config.yml中创建结构,为每个主题定义一个标签和标题,并递归检查是否有sub-topic。我认为这不是最正确的方法,但我生成了这样一个结构:
当我遍历这个数组时,打印标题和相应的 posts 这些标签?
或者有更好的方法吗?
Obs .: 这将在 GitHub,所以我不能使用插件。
如果你不能使用插件,我知道,实现这一点的唯一方法是循环遍历列表,每个级别一个循环。这是一个例子:
<ul class="topics">
{% for topic in site.topics %}
<li>
<a title="{{topic.title}}" href="/tags/{{topic.tag}}">{{topic.title}}</a>
{% if topic.subtopics %}
<ul class="subtopics">
{% for subtopic in topic.subtopics %}
<li>
<a title="{{subtopic.title}}" href="/tags/{{subtopic.tag}}">{{subtopic.title}}</a>
<!-- add another for if you have another level, and so on... -->
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
<ul>
我不认为你应该害怕性能,因为这里你编译一次"slow",服务很多次"fast"。
P.s.
如果你不需要从配置文件生成菜单,你总是可以直接将它写在 html 文件中,例如_includes/navigation.html
然后使用 {% include navigation.html %}
.