#jekyll
#jekyll
Вопрос:
Я использую Jekyll для создания своего веб-сайта. В настоящее время я создаю панель навигации для разных подстраниц. В принципе, у меня есть разные md-файлы с несколькими разделами, и каждый раздел начинается с заголовков, таких как, например:
##header 1
content
##header 2
content
...
Я пытаюсь создать панель навигации, которая направляет вас к абзацу на моей подстранице, на который вы нажимаете. (Например, навигация в Википедии)
Способ, который я использую в настоящее время, заключается в том, чтобы создать navigation.html для каждой вложенной страницы в моей папке _includes. Однако я осознаю, что это может вызвать проблемы, когда количество подстраниц увеличивается.
То, что я хочу сделать, в основном:
{% for "header" in "each .md-file" %}
<a href="#">{{ "name of header" }} </a>
{% endfor %}
Я знаю, например, что в моем _posts / post я мог бы просто сделать
{% for post in site.posts %}
Однако я хочу использовать md-файлы, которые находятся в моем корневом каталоге, и я не знаю, как конкретно их вызывать.
Подводя итог: у меня есть несколько .md-файлов в моем каталоге, и я хочу получить каждый заголовок ## в виде ссылки в таблице содержимого.
Заранее спасибо за любую помощь!
Комментарии:
1. Возможно, это не совсем то, что вы хотите, но вы можете позволить Kramdown сгенерировать оглавление для навигации. Подробнее см.: kramdown.gettalong.org/converter/html.html#toc
Ответ №1:
Как предлагает @marcanuy, я бы поместил ваши файлы в _pages
каталог. Обязательно добавьте include: ['_pages']
в настройки сборки в _config.yml
Теперь вы можете просматривать страницы с {% for page in site.pages %}
При этом все еще остается проблема получения всех заголовков. Когда я создавал определенный тип TOC в jekyll, я нашел этот фрагмент кода очень полезным. Вы можете использовать элементы оттуда.
Базовая версия того, что вы хотите, была бы следующей. Вам придется настроить это в зависимости от ваших настроек, но это должно делать то, что вы хотите. Вы могли бы поместить это в отдельный HTML-документ в _includes
или поместить его непосредственно в панель навигации.
{% 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 %}
Надеюсь, это поможет!
Ответ №2:
Если ваши файлы находятся в корневом каталоге, то это не так posts
, но pages
.
Вы можете перемещаться по такому пространству имен, как: {% for page in site.pages %}