如何使用 Jekyll / Liquid 创建主题菜单

How to create an topic menu with Jekyll / Liquid

我正在尝试创建一个大纲来模拟直接 link 到 post 的菜单。 这种结构类似于主题的帮助手册或书籍章节的结构。

问题是如何做,我想在config.yml中创建结构,为每个主题定义一个标签和标题,并递归检查是否有sub-topic。我认为这不是最正确的方法,但我生成了这样一个结构:

http://pastebin.com/k07yPmAq

当我遍历这个数组时,打印标题和相应的 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 %}.

从布局中包含它