web-dev-qa-db-ja.com

jekyllブログでタグをサポートする簡単な方法

私はブログを維持するために標準のjekyllインストールを使用しています、すべてがうまくいっています。自分の投稿に本当にタグを付けたい場合を除いて。

I can YAMLフロントマターを使用して投稿にタグを付けますが、タグのすべての投稿を一覧表示できるタグごとにページを生成するにはどうすればよいですか?

45
raheel

この要点は、カテゴリごとにページを生成します: https://Gist.github.com/524748

JekyllGeneratorプラグインとPageサブクラスを使用します。

14
Brian Clapper

これが解決策です1ページにアルファベット順にソートされたタグを使用
Liquidのみを使用します。つまり、GitHubPagesで機能します。

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

あなたはそれが実際に動いているのを見ることができます ここ


編集:

プラグインなしでタグごとに個別のページを生成する方法もあります(GitHubページで機能します)

私のブログでより詳細な説明があります:
Jekyllを使用したタグ/カテゴリごとの個別のページ(プラグインなし)

まず、新しいレイアウトファイルが必要です。

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

このレイアウトファイルを使用すると、YAMLフロントマターが2行しかない新しいファイルを追加することで、新しいタグページを追加できます。

jekyllタグの例を次に示します。

/tags/jekyll/index.html

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

このアプローチの唯一の欠点は、新しいタグを初めて使用するたびに、そのタグ用に新しい2行のファイルを作成することを忘れないでください。

ルートインデックスファイル(つまり、/tags/jekyll/index.htmlなどにリンクするタグのリスト)を生成するには、この回答の上にあるような同様のソリューションを使用できます。ここで、アルファベット順にソートされたタグを使用して単一のページを生成します。

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

これにより、次のようなリンクのリストが生成されます。

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

このソリューションは空白を使用してタグを分割するため、タグに空白が含まれている場合は機能せず、 Yevgeniy Brikmanのコメント ここでも適用されることに注意してください。

75

jekyllを使用しているサイト をご覧ください。タグ付け機能を実装したカスタムフォークがいくつかありますが、うまくいけばあなたが望む方法でも:-)

8
Bitterzoet

私は同じ質問をし、これに出くわしました: http://Gist.github.com/143571

これは、タグリストを生成するレーキタスクです。少し変更しましたが、バージョンは http://github.com/mattfoster/mattfoster.github.com/blob/master/Rakefile です。

これではタグごとのページは表示されませんが、アンカーを使用できます。これは途中です。

5
Matt

タグクラウドとタグページを自動的に生成する素晴らしい Jekyll Tagging プラグインを使用しています。インストールと使用が簡単です。

これが 「写真」タグのページ 私のブログ(フランス語)にあり、下部にタグクラウドが表示されています。

1
Nicolas Hoizey

上記のクリスチャンの答えに基づいて、私は彼が説明したことを実行するbashスクリプトを作成しました。

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

必ず/non_website_resources/ディレクトリに14行 vim script を添付してください

そして

上記のクリスチャンの回答に示されている/_layouts/tagpage.htmlを作成しますが、名前を/_layouts/tag_pages.htmlに変更します。

ファイル構造は次のようになります。

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

ルートディレクトリから実行します./rebuild_tags.sh

許可拒否エラーが発生した場合は、必ずchmod 777 rebuild_tags.shを実行してください


スクリプトのコメントを見ると、かなり単純です。

  • sedを使用して、.mdディレクトリ内のすべての_postファイル内のすべてのタグを検索します

  • sedを使用して、データを適切な形式にマッサージします

  • すべての一意のタグを取得し、それぞれにディレクトリとindex.htmlを作成します

このように、新しいタグがある場合は、スクリプトを実行してページを再構築してから、githubにプッシュします

タグを作成するための素晴らしくシンプルな非プラグインの方法


[〜#〜]編集[〜#〜]

他のファイルへの依存関係を削除しました。 1つのスクリプトが必要です!

1
ObjectiveTruth