ruby - secciones - jekyll themes
Una manera fácil de admitir etiquetas en un blog de jekyll (6)
Estoy usando la instalación estándar de jekyll para mantener un blog, todo va bien. Excepto que me gustaría etiquetar mis publicaciones.
Puedo etiquetar una publicación usando el material principal de YAML, pero ¿cómo puedo generar páginas para cada etiqueta que pueda enumerar todas las publicaciones de una etiqueta?
Aquí hay una solución con etiquetas ordenadas alfabéticamente en una sola página .
Utiliza Liquid Only, lo que significa que funciona en GitHub Pages:
{% 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 here .
EDITAR:
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:
Separar páginas 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 frente de YAML.
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 utiliza 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 a la que se encuentra en la parte superior de esta respuesta donde genero una sola página con alphebetically sorted etiquetas:
{% 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 utiliza un espacio en blanco para dividir las etiquetas, por lo que no funciona cuando las etiquetas contienen espacios en blanco y el comentario de Yevgeniy Brikman también se aplica aquí.
Basado en la respuesta de Christian anterior hice un script bash que hace lo que describió.
https://github.com/ObjectiveTruth/objectivetruth.github.io/blob/master/rebuild_tags.sh
Asegúrese de tener la secuencia de comandos de 14 líneas vim en el directorio /non_website_resources/
Y
Haz que /_layouts/tagpage.html
en la respuesta de Christian arriba, pero /_layouts/tag_pages.html
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:
Usa
sed
para encontrar todas las etiquetas en cada archivo_post
en el directorio_post
Utiliza
sed
para dar masajes a los datos al formato correctoToma todas las etiquetas únicas y crea un directorio y un
index.html
para cada
De esta manera, si tiene alguna etiqueta nueva, simplemente ejecute la secuencia de comandos para reconstruir las páginas antes de presionar a Github.
Una buena y sencilla forma de hacer etiquetas sin plugins
EDITAR
Se eliminó la dependencia de otros archivos. Solo necesito el guion!
Echa un vistazo a los sitios que usan jekyll . Hay algunas horquillas personalizadas que han implementado la funcionalidad de etiquetado, ojalá también en la forma que desee :-)
Esta idea generará una página por categoría para usted: https://gist.github.com/524748
Utiliza un plugin Jekyll Generator, más una subclase de página.
Tuve la misma pregunta y tropecé con esto: http://gist.github.com/143571 .
Es una tarea de rake que genera una lista de etiquetas. Lo modifiqué un poco, y mi versión está en: http://github.com/mattfoster/mattfoster.github.com/blob/master/Rakefile .
Si bien esto no le da una página por etiqueta, puede usar anclajes, ¡que está a medio camino de allí!
Uso el gran plugin de etiquetado Jekyll 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 etiqueta "foto" en mi blog (en francés), y puedes ver la nube de etiquetas en la parte inferior.