Domanda

Sto usando l'installazione standard jekyll per mantenere un blog, tutto sta andando bene. Tranne che vorrei davvero taggare i miei post.

Posso posso taggare un post usando la prima pagina di YAML, ma come posso generare pagine per ogni tag che elencherà tutti i post per un tag?

È stato utile?

Soluzione

Questa sintesi genererà una pagina per categoria per te: https://gist.github.com/524748

Utilizza un plug-in Jekyll Generator, oltre a una sottoclasse Page.

Altri suggerimenti

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 %}
  <h3 id="{{ tag }}">{{ tag }}</h3>
  <ul>
  {% for post in site.tags[tag] %}
    <li><a href="{{ post.url }}">{{ post.title }}</a></li>
  {% endfor %}
  </ul>
{% endfor %}

Puoi vederlo in azione qui .


Modifica

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:
Pagine separate per tag / categoria con Jekyll (senza plugin)

Innanzitutto, è necessario un nuovo file di layout:

/ _ layout / 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 questo file di layout, puoi aggiungere una nuova tag page aggiungendo un nuovo file con solo due righe di 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 (ovvero l'elenco di tag che si collega a /tags/jekyll/index.html ecc.) , è possibile utilizzare una soluzione simile come quello in cima a questa risposta in cui generi una singola pagina con tag ordinati alfabeticamente:

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

Questo genererà un elenco di collegamenti come questo:

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

Nota che questa soluzione utilizza uno spazio vuoto per dividere i tag, quindi non funziona quando i tuoi tag contengono spazi vuoti e Il commento di Yevgeniy Brikman si applica 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 mi sono imbattuto in questo: http://gist.github.com/143571.

È un'attività di rake che genera un elenco di tag. L'ho modificato leggermente e la mia versione è su: 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 Jekyll Tagging che genera automaticamente un cloud di tag e pagine di tag. Facile da installare e utilizzare.

Ecco una pagina per la " foto " tag sul mio blog (in francese) e puoi vedere il cloud dei tag in fondo.

Sulla base della risposta di Christian sopra ho realizzato una sceneggiatura bash che fa quello che ha descritto.

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

Assicurati di avere la riga 14 di accompagnamento vim script nella directory / non_website_resources /

AND

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

La struttura dei file dovrebbe essere così:

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

Esegui dalla directory principale ./rebuild_tags.sh

Se ricevi l'autorizzazione negata, assicurati di eseguire chmod 777 rebuild_tags.sh


Se guardi i commenti degli script è abbastanza semplice:

  • Utilizza sed per trovare tutti i tag in ogni file .md nella directory _post

  • Utilizza 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 semplicemente lo script per ricostruire le pagine prima di passare a github

Un modo semplice e non plug-in per fare tag


Modifica

Dipendenza rimossa da altri file. Ho solo bisogno di un solo script!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top