Un modo semplice per supportare i tag in un blog jekyll

Sto usando l’installazione standard di jekyll per mantenere un blog, tutto sta andando bene. Tranne che mi piacerebbe molto taggare i miei post.

Posso taggare un post usando la parte anteriore di YAML, ma come faccio a generare pagine per ogni tag in grado di elencare tutti i post di un tag?

Questo elenco genererà una pagina per categoria per te: https://gist.github.com/524748

Utilizza un plug-in Jekyll Generator, oltre a una sottoclass Pagina.

Ecco una soluzione con tag ordinati alfabeticamente su una singola pagina .
Utilizza solo Liquid, il che significa che funziona su GitHub Pages:

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

{{ tag }}

{% endfor %}

Puoi vederlo in azione qui .


MODIFICARE:

C’è anche un modo per generare una pagina separata per ogni tag senza plugin (che funzionerà su GitHub Pages) .

Ho una spiegazione più dettagliata sul mio blog:
Separare le pagine per tag / categoria con Jekyll (senza plugin)

Innanzitutto, hai bisogno di un nuovo file di layout:

/_layouts/tagpage.html :

 --- layout: default --- 

{{ page.tag }}

    {% for post in site.tags[page.tag] %}
  • {{ post.date | date: "%B %d, %Y" }}: {{ post.title }}
  • {% endfor %}

Con questo file di layout, puoi aggiungere una nuova pagina di tag aggiungendo un nuovo file con solo due righe di frontespizio YAML.

Ecco un esempio per il tag jekyll :

/tags/jekyll/index.html :

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

L’unico svantaggio di questo approccio: ogni volta che usi un nuovo tag per la prima volta, devi ricordarti di creare un nuovo file a due righe per esso.

Per generare il file indice radice (es. La lista di tag che si collega a /tags/jekyll/index.html ecc.) , Puoi usare una soluzione simile come quella in cima a questa risposta dove io generi una singola pagina con ordine alfabeticamente ordinato tags:

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

Questo genererà un elenco di link come questo:

  

Si noti che questa soluzione utilizza un tag vuoto per dividere, quindi non funziona quando i tag contengono spazi vuoti e anche il commento di Yevgeniy Brikman vale anche qui.

Dai un’occhiata ai siti che usano jekyll . Ci sono alcune forcelle personalizzate che hanno implementato la funzionalità di tagging, si spera anche nel modo desiderato 🙂

Ho avuto la stessa domanda e sono incappato in questo: http://gist.github.com/143571 .

È un compito rake che genera un elenco di tag. L’ho leggermente modificato e la mia versione è disponibile all’indirizzo: http://github.com/mattfoster/mattfoster.github.com/blob/master/Rakefile .

Anche se questo non ti dà una pagina per tag, puoi usare le ancore, che sono a metà strada!

Uso il fantastico plug-in Jekyll Tagging che genera automaticamente una nuvola di tag e pagine di tag. Facile da installare e utilizzare.

Ecco una pagina per il tag “foto” sul mio blog (in francese), e puoi vedere i tag cloud in basso.

Sulla base della risposta di Christian sopra ho fatto uno script bash che fa quello che ha descritto.

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

Assicurati di avere lo script di 14 righe di accompagnamento nella directory /non_website_resources/

E

Rendi il /_layouts/tagpage.html mostrato nella risposta di Christian sopra, ma rinominalo in /_layouts/tag_pages.html

La struttura del file dovrebbe essere così:

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

Esegui dalla directory root ./rebuild_tags.sh

Se ottieni l’authorization negata, assicurati di eseguire chmod 777 rebuild_tags.sh


Se si guardano i commenti degli script è piuttosto semplice:

  • Usa sed per trovare tutti i tag in ogni file _post nella directory _post

  • Usa sed per massaggiare i dati nel formato corretto

  • Prende tutti i tag univoci e crea una directory e un index.html per ciascuno

In questo modo, se hai nuovi tag, esegui lo script per ribuild le pagine prima di passare a github

Un modo semplice e non-plugin per fare tag


MODIFICARE

Dipendenza rimossa da altri file. Mi serve solo la sceneggiatura!