Вопрос

Я использую стандартную установку jekyll для ведения блога, все идет нормально.За исключением того, что я бы действительно хотел помечать свои посты тегами.

Я может пометьте запись с помощью интерфейса YAML, но как мне сгенерировать страницы для каждого тега, которые могут содержать список всех записей для тега?

Это было полезно?

Решение

Этот список создаст для вас страницу по категории: https://gist.github.com/524748

Он использует плагин Jekyll Generator и подкласс Page.

Другие советы

Вот такое решение с отсортированными по алфавиту тегами на одной странице.
Он использует только Liquid, что означает, что он работает на страницах GitHub:

{% capture tags %}
  {% for tag in site.tags %}
    {{ tag[0] }}
  {% endfor %}
{% endcapture %}
{% assign sortedtags = tags | split:' ' | sort %}

{% for tag in sortedtags %}
  <h3 id="{{ tag }}">{{ tag }}</h3>
  <ul>
  {% for post in site.tags[tag] %}
    <li><a href="{{ post.url }}">{{ post.title }}</a></li>
  {% endfor %}
  </ul>
{% endfor %}

Вы можете увидеть это в действии здесь.


Редактировать:

Существует также способ сгенерировать отдельную страницу для каждого тега без плагинов (который будет работать на страницах GitHub).

У меня есть более подробное объяснение в моем блоге:
Отдельные страницы для каждого тега / категории с помощью Jekyll (без плагинов)

Во-первых, вам нужен новый файл макета:

/_layouts/tagpage.html:

---
layout: default
---

<h1>{{ page.tag }}</h1>

<ul>
{% for post in site.tags[page.tag] %}
  <li>
    {{ post.date | date: "%B %d, %Y" }}: <a href="{{ post.url }}">{{ post.title }}</a>
  </li>
{% endfor %}
</ul>

С помощью этого файла макета вы можете добавить новую страницу тегов, добавив новый файл, содержащий всего две строки интерфейса YAML.

Вот пример для jekyll тег:

/tags/jekyll/index.html:

---
layout: tagpage
tag: jekyll
---

Единственный недостаток такого подхода:каждый раз, когда вы используете новый тег в первый раз, вы должны помнить о необходимости создания для него нового двухстрочного файла.

Чтобы сгенерировать корневой индексный файл (т.е.список тегов, которые ссылаются на /tags/jekyll/index.html и т.д.), вы можете использовать аналогичное решение, подобное приведенному в верхней части этого ответа, где я создаю единую страницу с алфавитно отсортированными тегами:

{% capture tags %}
  {% for tag in site.tags %}
    {{ tag[0] }}
  {% endfor %}
{% endcapture %}
{% assign sortedtags = tags | split:' ' | sort %}
{% for tag in sortedtags %}
    <a href="/tags/{{ tag }}/">{{ tag }}</a><br>
{% endfor %}

Это сгенерирует список ссылок, подобных этому:

<ul>
    <li><a href="/tags/.net/">.net</a></li>
    <li><a href="/tags/authentication/">authentication</a></li>
    <li><a href="/tags/backup/">backup</a></li>
</ul>

Обратите внимание, что это решение использует пробел для разделения тегов, поэтому оно не работает, когда ваши теги содержат пробелы и Комментарий Евгения Брикмана это применимо и здесь.

Ознакомьтесь с сайтами, использующими jekyll . Есть несколько пользовательских вилок, которые реализовали функциональность тегов, надеюсь, также так, как вы хотите: -)

У меня был тот же вопрос, и я наткнулся на него: http://gist.github.com/143571.

Это грабельная задача, которая генерирует список тегов. Я немного изменил его, и моя версия находится на: http://github.com/mattfoster/mattfoster.github.com/blob / ведущий / Rakefile .

Хотя это не дает вам страницу для каждого тега, вы можете использовать якоря, которые находятся на полпути!

Я использую отличный Jekyll Tagging плагин, который автоматически генерирует облако тегов и страницы тегов. Простота установки и использования.

Вот страница для " фото " тег в моем блоге (на французском языке), и вы можете увидеть облако тегов внизу.

Основываясь на приведенном выше ответе Кристиана, я создал скрипт bash, который делает то, что он описал.

https://github.com/ObjectiveTruth/objectivetruth.github.io/blob/master/rebuild_tags.sh

Обязательно используйте прилагаемую строку 14 vim - скрипт в /non_website_resources/ каталог

И

Сделайте так, чтобы /_layouts/tagpage.html показано в ответе Кристиана выше, но переименуйте его в /_layouts/tag_pages.html

Структура файла должна быть такой:

.jekyll_website_root
├── _posts
├── _layout
│   ├── tag_pages.html
├── rebuild_tags.sh

Запуск из корневого каталога ./rebuild_tags.sh

Если вы получите сообщение об ошибке "отказано в разрешении", обязательно запустите chmod 777 rebuild_tags.sh


Если вы посмотрите на комментарии к скриптам, это довольно просто:

  • Использование sed чтобы найти все теги в каждом .md файл в _post каталог

  • Использование sed чтобы преобразовать данные в надлежащий формат

  • Принимает все уникальные теги и создает каталог и index.html для каждого

Таким образом, если у вас есть какие-либо новые теги, просто запустите скрипт для перестройки страниц, прежде чем переходить на github

Хороший простой способ создания тегов без использования плагина


Редактировать

Удалена зависимость от других файлов.Просто нужен один сценарий!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top