Pregunta

Estoy utilizando la instalación jekyll estándar para mantener un blog, todo va bien. Excepto que realmente me gustaría etiquetar mis mensajes.

I puedo etiquetar una publicación usando el tema de YAML, pero ¿cómo genero páginas para cada etiqueta que pueden enumerar todas las publicaciones de una etiqueta?

¿Fue útil?

Solución

Esta esencia generará una página por categoría para usted: https://gist.github.com/524748

Utiliza un complemento de Jekyll Generator, más una subclase de página.

Otros consejos

Aquí hay una solución con etiquetas ordenadas alfabéticamente en una sola página .
Solo utiliza Líquido, lo que significa que funciona en las páginas de 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 %}

Puedes verlo en acción aquí .


EDIT:

También hay una forma de generar una página separada para cada etiqueta sin complementos (que funcionará en las páginas de GitHub) .

Tengo una explicación más detallada en mi blog:
Páginas separadas por etiqueta / categoría con Jekyll (sin complementos)

Primero, necesitas un nuevo archivo de diseño:

/_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>

Con este archivo de diseño, puede agregar una nueva página de etiquetas agregando un nuevo archivo con solo dos líneas de YAML en el frente.

Aquí hay un ejemplo para la etiqueta jekyll :

/tags/jekyll/index.html :

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

La única desventaja de este enfoque: cada vez que use una nueva etiqueta por primera vez, debe recordar crear un nuevo archivo de dos líneas para ella.

Para generar el archivo de índice raíz (es decir, la lista de etiquetas que enlaza con /tags/jekyll/index.html etc.) , puede usar una solución similar como la que se encuentra en la parte superior de esta respuesta, donde genero una sola página con etiquetas ordenadas alfabéticamente:

{% 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 %}

Esto generará una lista de enlaces como este:

<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>

Tenga en cuenta que esta solución usa un espacio en blanco para dividir etiquetas, por lo que no funciona cuando sus etiquetas contienen espacios en blanco y El comentario de Yevgeniy Brikman también se aplica aquí.

Echa un vistazo a los sitios que utilizan jekyll . Hay algunas bifurcaciones personalizadas que han implementado la funcionalidad de etiquetado, con suerte también de la forma que desee :-)

Tenía la misma pregunta y me topé con esto: http://gist.github.com/143571.

Es una tarea de rake que genera una lista de etiquetas. Lo modifiqué ligeramente, y mi versión está en: < / master / Rakefile .

Si bien esto no te da una página por etiqueta, puedes usar los anclajes, ¡que están a mitad de camino!

Uso el gran Jekyll Tagging que genera automáticamente una nube de etiquetas y páginas de etiquetas. Fácil de instalar y usar.

Aquí hay una página para la " foto " etiqueta en mi blog (en francés), y puedes ver las etiquetas en la parte inferior.

Basado en la respuesta de Christian anterior, hice un guión de bash que hace lo que él describió.

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

Asegúrese de tener la línea 14 que lo acompaña vim script en el directorio / non_website_resources /

Y

Haz el /_layouts/tagpage.html que se muestra en la respuesta de Christian anterior, pero cambia su nombre a /_layouts/tag_pages.html

La estructura del archivo debería ser así:

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

Ejecutar desde el directorio raíz ./rebuild_tags.sh

Si obtiene un error de permiso denegado, asegúrese de ejecutar chmod 777 rebuild_tags.sh


Si miras los comentarios de los scripts es bastante simple:

  • Utiliza sed para encontrar todas las etiquetas en cada archivo .md en el directorio _post

  • Utiliza sed para masajear los datos al formato correcto

  • Toma todas las etiquetas únicas y crea un directorio y un index.html para cada

De esta manera, si tiene etiquetas nuevas, simplemente ejecute el script para reconstruir las páginas antes de presionar github

Una buena forma simple y no plugin para hacer etiquetas


EDIT

Se eliminó la dependencia de otros archivos. ¡Solo necesitas el script!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top