Eine einfache Möglichkeit, Tags in einem jekyll Blog zu unterstützen
Frage
Ich bin mit dem Standard jekyll Installation ein Blog zu halten, alles wird gut. Mit Ausnahme möchte ich wirklich meine Beiträge markieren.
I kann einen Beitrag markieren, die YAML Titelei verwenden, aber wie kann ich generiere Seiten für jeden Tag, das alle Beiträge für einen Tag listet können?
Lösung
Dieser Kern wird eine Seite pro Kategorie für Sie generieren: https://gist.github.com/524748
Es verwendet einen Jekyll Generator Plugin, sowie eine Seite der Unterklasse.
Andere Tipps
Hier ist eine Lösung mit alphabetisch sortierten Tags auf einer einzelnen Seite .
Es verwendet nur Flüssigkeit, was bedeutet, dass es funktioniert auf GitHub Seiten:
{% 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 %}
Sie können es in Aktion sehen hier .
EDIT:
Es gibt auch eine Möglichkeit, eine separate Seite für jeden Tag zu generieren, ohne Plugins (die auf GitHub Seiten arbeiten) .
Ich habe eine ausführlichere Erklärung auf meinem Blog:
Separate Seiten pro Tag / Kategorie mit Jekyll (ohne Plugins)
Zuerst müssen Sie eine neue Layout-Datei:
/_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>
Mit dieser Layout-Datei können Sie eine neue Variable Seite hinzufügen, indem Sie eine neue Datei hinzufügen mit nur zwei Linien von YAML Front-Materie.
Hier ist ein Beispiel für den jekyll
Tag:
/tags/jekyll/index.html
:
---
layout: tagpage
tag: jekyll
---
Der einzige Nachteil dieses Ansatzes: jedes Mal, wenn Sie einen neuen Tag zum ersten Mal verwenden, müssen Sie daran denken, eine neue zweizeilige Datei für sie zu schaffen
. das Stammindexdatei zu generieren (dh die Liste der Tags, die usw /tags/jekyll/index.html
verbindet.) können Sie eine ähnliche Lösung wie die im oberen Teil der Antwort verwenden, wo ich eine einzelne Seite erzeugen mit alphebetically sortiert tags:
{% 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 %}
Es wird eine Liste von Links wie folgt erzeugen:
<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>
Beachten Sie, dass diese Lösung eine leere verwendet Tags zu spalten, so dass es nicht funktioniert, wenn Ihre Tags Leerzeichen enthalten und Yevgeniy Brikman Kommentar gilt auch hier.
Hier finden Sie aktuelle Sites mit jekyll . Es gibt ein paar individuelle Gabeln, die Tagging-Funktionalität implementiert haben, hoffentlich auch in der Art und Weise Sie wollen: -)
Ich hatte die gleiche Frage, und eher zufällig auf dieses: http://gist.github.com/143571.
Es ist eine Rake Aufgabe, die eine Tag-Liste erzeugt. Ich änderte es leicht, und meine Version ist unter: http://github.com/mattfoster/mattfoster.github.com/blob / Master / Rakefile .
Während dies Sie nicht eine Seite pro Tag nicht geben, können Sie Anker verwenden, die auf halbem Weg gibt ist!
Ich verwende den großen Jekyll Tagging Plugin, das automatisch eine Tags Cloud und das Tag-Seiten erzeugt. Einfach zu installieren und zu verwenden.
Hier ist eine Seite für den „Foto“ tag auf meinem Blog (auf Französisch ), und Sie können die Tags Wolke am Boden sehen.
Basierend auf Christians Antwort oben ich einen Bash-Skript gemacht, das tut, was er beschrieben.
https://github.com/ObjectiveTruth/objectivetruth. github.io/blob/master/rebuild_tags.sh
Achten Sie darauf, die begleitende Zeile 14 haben vim Skript in dem /non_website_resources/
Verzeichnis
und
Machen Sie die /_layouts/tagpage.html
in Christians Antwort gezeigt oben, aber benennen Sie sie in /_layouts/tag_pages.html
Dateistruktur sollte wie folgt sein:
.jekyll_website_root
├── _posts
├── _layout
│ ├── tag_pages.html
├── rebuild_tags.sh
Ausführen aus dem Stammverzeichnis ./rebuild_tags.sh
Wenn Sie die Berechtigung verweigert Fehler sicher sein, erhalten chmod 777 rebuild_tags.sh
laufen
Wenn Sie Skripte aussehen, kommentiert seine ziemlich einfach:
-
Verwendet
sed
alle Tags in jeder.md
Datei in_post
Verzeichnis finden -
Verwendet
sed
die Daten auf richtiges Format zu massieren -
nimmt alle einzigartigen Tags und macht ein Verzeichnis und einen
index.html
für jede
Auf diese Weise, wenn Sie irgendwelche neue Tags, nur das Skript ausführen, um die Seiten neu zu erstellen, bevor zu GitHub schieben
Ein schönes, einfaches Nicht-Plug-Weg-Tags zu tun
Bearbeiten
entfernt die Abhängigkeit von anderen Dateien. Nur müssen die ein Skript!