Ответ 1
При создании моего собственного сайта я столкнулся с этой самой проблемой, и я нашел (IMHO) легкое и надежное решение. Надеюсь, это полезно для всех, кто хочет сделать что-то подобное.
Проблема
Учитывая подмножество страниц (не сообщений) на сайте, перечислите их по рубрикам на основе их категорий. Например: учитывая набор страниц, на которые мы рассматриваем страницы ресурсов (или ссылочные страницы или любую логическую группу страниц, которые вы хотите отобразить), мы хотим перечислить их по категориям (например, код, пояснения и т.д.),.
Решение
Чтобы получить нужное поведение, мы должны внести изменения в три места:
-
_config.yml
-
resources.md
-
resource-file-X.md
_config.yml
В _config.yml
мы должны добавить список всех категорий/ключевых слов/тегов (или того, что вы хотите назвать), которые появятся в файлах ресурсов. Вот что я имею в своем:
category-list: [code, editors, math, unix]
Вы можете вызвать переменную что угодно, я выбрал category-list
, просто убедитесь, что вы используете одну и ту же переменную в файле resource.md
.
Примечание. Порядок размещения элементов в списке - это порядок, который они будут перечислены на странице resource.md
.
resource-file-X.md
Это файлы, которые вы хотите проиндексировать и связать с ними на странице resources.md
. Все, что вам нужно сделать, это добавить две переменные файла в начало каждого из этих файлов. Первый - указать, что этот файл является файлом ресурсов.
resource: true
Во-вторых, укажите, какие категории вы хотите индексировать. Вы можете индексировать его под столько категорий, сколько хотите, и если вы хотите, чтобы страница была не проиндексирована, оставьте этот список пустым. Моя ссылка для правильной обработки EINTR в C имеет следующие категории:
categories: [code, unix]
resources.md
Это файл, который будет генерировать список страниц на основе их соответствующих категорий. Все, что вам нужно сделать, это добавить в этот файл следующий код (или любой другой файл, в который вы хотите включить этот список):
{% for cat in site.category-list %}
### {{ cat }}
<ul>
{% for page in site.pages %}
{% if page.resource == true %}
{% for pc in page.categories %}
{% if pc == cat %}
<li><a href="{{ page.url }}">{{ page.title }}</a></li>
{% endif %} <!-- cat-match-p -->
{% endfor %} <!-- page-category -->
{% endif %} <!-- resource-p -->
{% endfor %} <!-- page -->
</ul>
{% endfor %} <!-- cat -->
Разбивка кода
Простое объяснение того, как это работает:
- Прокрутите каждую из категорий, указанных в
_config.yml
. - Отобразить заголовок с именем этой категории.
- Запустите неупорядоченный список для страниц, относящихся к этой категории.
- Прокрутите страницы на сайте.
- Если страница является файлом ресурсов, указанным в переменной файла
resource
, то для каждой из категорий, к которой принадлежит файл, если одна из них соответствует текущей категории, отображается ссылка на эту страницу.
Примечание: переменные category-list
в _config.yml
и categories
в файлах ресурсов могут быть вызваны независимо от того, что вы хотите, просто убедитесь, что вы используете те же переменные в файле, генерирующем список.
Другое примечание. Когда вы изменяете _config.yml
, вы должны полностью перезапустить Jekyll, даже если у вас есть опция --watch
, вы должны остановить и перезапустить его. Мне потребовалось некоторое время, чтобы понять, почему мои изменения не вступили в силу!
Конечный продукт
Вы можете увидеть конечный продукт на странице ресурсов мой сайт, хотя я просто собрал это вместе сегодня, чтобы на момент этого это далеко не полный, но вы можете проверить свою биографию, если хотите, на домашней странице.
Надеюсь, это поможет!