Простой способ поддерживать теги в блоге jekyll

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

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

Ответ 1

Этот метод будет генерировать страницу для каждой категории: https://gist.github.com/524748

Он использует плагин Jekyll Generator, а также подкласс Страница.

Ответ 2

Вот решение с алфавитно отсортированными тегами на одной странице.
Он использует только 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 %}

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


EDIT:

Также существует возможность генерировать отдельную страницу для каждого тега без плагинов (что будет работать на страницах 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>

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

Ответ 3

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

Ответ 4

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

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

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

Ответ 5

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

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

Ответ 6

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

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

В каталоге /non_website_resources/ убедитесь, что в строке /non_website_resources/ содержится следующая строка vim script.

И

Сделайте /_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 для каждого

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

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


ИЗМЕНИТЬ

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