Создание категорий на сайте Jekyll
Мне сложно понять, как создавать архивные страницы для каждой категории, которую я использую в своем блоге. Я хотел бы, чтобы пользователь мог нажать на категорию, а затем перейти на страницу, в которой перечислены все статьи с назначенной нужной категорией.
Единственный способ, которым я могу это сделать, - вручную создать конкретный html файл для каждой категории в корне. Но я уверен, что должен быть более динамичный способ?
У меня есть сайт, размещенный на github - https://github.com/sirbrad/sirbrad.github.com
Спасибо заранее!
Брэд
Ответы
Ответ 1
Вы можете создать список всех доступных категорий, используя данные site.categories
, используя первый элемент каждой категории (который является массивом), чтобы получить название категории:
{% for cat in site.categories %}
<li>{{ cat[0] }}</li>
{% endfor %}
И вы можете сгенерировать список всех сообщений в данной категории, например:
{% for post in site.categories.CATEGORY_NAME %}
Кажется, что невозможно создать отдельную страницу HTML для каждой категории, как вы надеялись, но, возможно, хорошим компромиссом будет создание отдельной страницы, содержащей список всех категорий, где каждая категория содержит все записи в эта категория. Затем вы можете использовать простой JavaScript для скрытия сообщений в каждой категории до тех пор, пока не будет выбрано название категории, что дает почти одинаковый опыт работы с отдельными страницами архива для каждой категории.
Ответ 2
Примечание. Я связываю примеры здесь, которые используют теги (потому что примеры уже существуют с тегами), но они работают одинаково для категорий.
Если вы не хотите использовать плагин, например, если вы хотите, чтобы ваш сайт работал на страницах GitHub, у вас есть только два варианта:
Ответ 3
Вы можете использовать Dave Perett generate_categories.rb плагин для автоматического создания страницы для каждой категории на вашем сайте. Затем используйте цикл for для запуска через категории вашего сайта и создайте ссылку для каждого в вашей навигации (или там, где вы хотите ссылаться на страницы архива), как это сделал Джон в ответ на ваш quesiton.
Ответ 4
Для страниц github вы можете создать страницу архива с
{% for pt in site.categories %}[{{pt[0]}}](#cat-{{pt[0]}}), {% endfor %}
{% for cat in site.categories %}
{% assign nt = cat[0] %}
#### {{ nt }} {#cat-{{nt}}}
<ul>
{% for post in site.posts %}
{% for pt in post.categories %}
{% if nt == pt %}
<li>
{{post.published}} <a href="{{ post.url }}">{{ post.title }}</a>
</li>
{% endif %}
{% endfor %}
{% endfor %}
</ul>
{% endfor %}
На моей машине, с примерно 200 сообщениями, для создания всего сайта требуется 3 с. Это потому, что внутренний if выполняется категориями x number_of_posts раз. С другой стороны, у вас будет страница архива без использования какого-либо плагина.