我如何使用 jekyll 解决 md-File 中的 header?
How can I address the header in an md-File using jekyll?
我正在使用 Jekyll 生成我的网站。
目前我正在为不同的子页面构建一个导航栏。基本上我有多个不同的 md-files 部分,每个部分都以 header 开头,例如:
##header 1
content
##header 2
content
...
我尝试构建一个导航栏,将您定向到您正在单击的我的子页面上的段落。 (比如维基百科中的导航)
我目前使用的方法是为我的 _includes 文件夹中的每个子页面创建一个 navigation.html。但是,我知道,当子页面数量增加时,这可能会引起麻烦。
我想做的基本上是:
{% for "header" in "each .md-file" %}
<a href="#">{{ "name of header" }} </a>
{% endfor %}
例如,我知道在我的 _posts/post 中我可以做到
{% for post in site.posts %}
但是,我想使用的 md-Files 在我的 root-Directory 中,我不知道如何具体调用它们。
总结一下:我的目录中有多个 .md-files,我想将每个 ##header 作为 link 内容中的 table。
在此先感谢您的帮助!
如果您的文件位于根目录,那么它们不是 posts
,而是 pages
。
您可以像这样遍历这样的命名空间:{% for page in site.pages %}
正如@marcanuy 所建议的,我会将您的文件放在 _pages
目录中。
请务必将 include: ['_pages']
添加到 _config.yml
中的构建设置中
现在您可以使用 {% for page in site.pages %}
浏览页面
这仍然留下了获得所有 headers 的挑战。
当我在 jekyll 中创建特定类型的目录时,我发现 this piece of code 非常有帮助。您可以使用那里的元素。
您想要的基本版本如下。你必须根据你的 set-up 来调整它,但它应该做你想做的。您可以将它放在 _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 %}
希望对您有所帮助!
我正在使用 Jekyll 生成我的网站。 目前我正在为不同的子页面构建一个导航栏。基本上我有多个不同的 md-files 部分,每个部分都以 header 开头,例如:
##header 1
content
##header 2
content
...
我尝试构建一个导航栏,将您定向到您正在单击的我的子页面上的段落。 (比如维基百科中的导航) 我目前使用的方法是为我的 _includes 文件夹中的每个子页面创建一个 navigation.html。但是,我知道,当子页面数量增加时,这可能会引起麻烦。
我想做的基本上是:
{% for "header" in "each .md-file" %}
<a href="#">{{ "name of header" }} </a>
{% endfor %}
例如,我知道在我的 _posts/post 中我可以做到
{% for post in site.posts %}
但是,我想使用的 md-Files 在我的 root-Directory 中,我不知道如何具体调用它们。
总结一下:我的目录中有多个 .md-files,我想将每个 ##header 作为 link 内容中的 table。
在此先感谢您的帮助!
如果您的文件位于根目录,那么它们不是 posts
,而是 pages
。
您可以像这样遍历这样的命名空间:{% for page in site.pages %}
正如@marcanuy 所建议的,我会将您的文件放在 _pages
目录中。
请务必将 include: ['_pages']
添加到 _config.yml
现在您可以使用 {% for page in site.pages %}
浏览页面
这仍然留下了获得所有 headers 的挑战。
当我在 jekyll 中创建特定类型的目录时,我发现 this piece of code 非常有帮助。您可以使用那里的元素。
您想要的基本版本如下。你必须根据你的 set-up 来调整它,但它应该做你想做的。您可以将它放在 _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 %}
希望对您有所帮助!