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

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

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

6 ответов


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

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


вот решение С теги сортируются в алфавитном порядке на одной странице.
Он использует только жидкость, что означает, что он работает на страницах 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 front-matter.

вот пример jekyll tag:

/tags/jekyll/index.html:

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

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

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

{% 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/master/Rakefile.

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


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

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


основываясь на ответе Кристиана выше, я сделал сценарий 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 чтобы найти все теги в каждом на _post каталог

  • использует sed для массажа данных в нужном формате

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

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

хороший простой не-плагин способ сделать теги


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

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