如何使用jekyll对md文件中的头进行寻址?

如何使用jekyll对md文件中的头进行寻址?,jekyll,Jekyll,我正在使用Jekyll生成我的网站。 目前,我正在为不同的子页面构建一个导航栏。基本上,我有不同的md文件,其中包含多个部分,每个部分都以标题开头,例如: ##header 1 content ##header 2 content ... 我试着建立一个导航栏,引导你去点击我的子页面上的段落。(如维基百科中的导航) 我目前使用的方法是为我的_includes文件夹中的每个子页面制作一个navigation.html。然而,我知道,当子页面的数量增加时,这可能会引起麻烦 我想做的基本上是: {%

我正在使用Jekyll生成我的网站。 目前,我正在为不同的子页面构建一个导航栏。基本上,我有不同的md文件,其中包含多个部分,每个部分都以标题开头,例如:

##header 1
content
##header 2
content
...
我试着建立一个导航栏,引导你去点击我的子页面上的段落。(如维基百科中的导航) 我目前使用的方法是为我的_includes文件夹中的每个子页面制作一个navigation.html。然而,我知道,当子页面的数量增加时,这可能会引起麻烦

我想做的基本上是:

{% for "header" in "each .md-file" %}
    <a href="#">{{ "name of header" }} </a>
{% endfor %}
但是,我想使用的md文件在我的根目录中,我不知道如何具体地调用它们

总而言之:我的目录中有多个.md文件,希望将每个##头作为目录中的链接


提前感谢您的帮助

如果您的文件位于根目录下,则它们不是
文章
,而是
页面


您可以遍历这样的名称空间,如:
{%for page in site.pages%}

如果您的文件位于根目录,则它们不是
文章
,而是
页面


您可以遍历这样的命名空间,如:
{%for page in site.pages%}

正如@marcanuy所建议的,我会将您的文件放在
\u pages
目录中。 确保在
\u config.yml

现在您可以使用
{%for page in site.pages%}
这仍然存在获取所有标题的挑战。 当我在jekyll中创建特定类型的TOC时,我发现非常有用。您可以从那里使用元素

您想要的基本版本如下所示。你必须根据你的设置来调整它,但它应该做你想做的。您可以将其放在
\u includes
中单独的html文档中,或者直接放在导航栏中


{% for page in site.pages %}

<ul>
    {% assign headers = page.content | split: '<h' %}
        {% for header in headers %}
            {% assign _string = header | split: '</h' %}
            {% capture _hAttrToStrip %}{{ _string[0] | split: '>' | first }}>{% endcapture %}
            {% assign title = _string[0] | replace: _hAttrToStrip, '' %}

            {% assign _idstring = header | split: 'id="' %}
            {% assign _idstring = _idstring[1] | split: '"' %}
            {% assign html_id = _idstring[0] %}

            <li>
                <a href={{page.url}}#{{html_id}}>{{title}}</a>
            </li>
        {% endfor %}
</ul>
{% endfor %}

{site.pages%中的页面为%s}

    {%assign headers=page.content | split:'正如@marcanuy所建议的,我会将您的文件放在
    \u pages
    目录中。 确保在
    \u config.yml

    现在您可以使用
    {%for page in site.pages%}
    这仍然存在获取所有标题的挑战。 当我在jekyll中创建特定类型的TOC时,我发现它非常有用。您可以从中使用元素

    您所需内容的基本版本如下。您必须根据设置对其进行调整,但它应该满足您的需要。您可以将其放入
    \u includes
    中单独的html文档中,或直接将其放置在导航栏中

    
    {% for page in site.pages %}
    
    <ul>
        {% assign headers = page.content | split: '<h' %}
            {% for header in headers %}
                {% assign _string = header | split: '</h' %}
                {% capture _hAttrToStrip %}{{ _string[0] | split: '>' | first }}>{% endcapture %}
                {% assign title = _string[0] | replace: _hAttrToStrip, '' %}
    
                {% assign _idstring = header | split: 'id="' %}
                {% assign _idstring = _idstring[1] | split: '"' %}
                {% assign html_id = _idstring[0] %}
    
                <li>
                    <a href={{page.url}}#{{html_id}}>{{title}}</a>
                </li>
            {% endfor %}
    </ul>
    {% endfor %}
    
    
    {site.pages%中的页面为%s}
    

      {%assign headers=page.content | split:'可能,不完全是您想要的,但您可以让Kramdown生成一个目录用于导航。有关详细信息,请参阅:可能,不完全是您想要的,但您可以让Kramdown生成一个目录用于导航。有关详细信息,请参阅: