rcmdnk's blog
Last update

以前Octopress Tipsで書いたように タグクラウドなどを導入してみましたが、これはtagsではなくcategories をリストしたものになっていましたし、tagsについては有効に使えて無かったので、 categoriestagsを使い分ける様にしました。

Sponsored Links

以下の手順で、各ファイルを変更してき、 tag_cloudプラグインでtagsを使える様にします。

plugins/tag_cloud.rb

class TagCloud内を変更。

  • categorytag
  • categoriestags

plugins/tag_generator.rb

まず、このファイルは最初存在しないので plugins/category_generator.rbをコピーして作成。

出来たファイル内を以下の様に変更。

  • categorytag
  • categoriestags
  • CategoryTag
  • CategoriesTags

sass/partials/_archive.scsssass/partials/_blog.scss

tag/tagsをこれらのファイルに追加。

  • _archive.scss:
    • a.categorya.category, a.tag
    • .category.category, .tag
  • _blog.scss:
    • .byline ~ .categories:before.byline ~ .categories:before, .byline ~ .tags:before

source/_layouts/tag_index.html

source/_layouts/category_index.htmlをコピーして作成して 以下の様に変更。

  • categorytag
  • categoriestags

source/_includes/post/tags.htmlsource/_includes/post/categories.html

source/_includes/post/categories.htmlをコピーして source/_includes/post/tags.htmlを作成して 以下の様に変更。

  • categorytag
  • categoriestags
  • Posted inTagged as
1
2
3
<span class="tags">
  Tagged as
  ...

の様にTagged asをspanタグ内に追加。

categories.htmlにも

1
2
3
<span class="categories">
  Posted in
  ...

の様にPosted in追加。

source/_includes/custom/tag_feed.xml

source/_includes/custom/category_feed.xmlをコピーして作成し

  • categorytag
  • categoriestags

source/_includes/archive_post.html, /source/_includes/article.html

tagを追加

  • archive_post.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{% capture category %}{{ post.categories | size }}{% endcapture %}
{% capture tag %}{{ post.tags | size }}{% endcapture %}
<h1><a href="{{ root_url }}{{ post.url }}">{{post.title}}</a></h1>
<time datetime="{{ post.date | datetime | date_to_xmlschema }}" pubdate>{{ post.date | date: "<span class='month'>%b</span> <span class='day'>%d</span> <span class='year'>%Y</span>"}}</time>
{% if category != '0' || if tag != '0' %}
<footer>
  {% if category != '0' %}
  <span class="categories">Posted in {{ post.categories | category_links }}</span>
  {% endif %}
  {% if tag != '0' %}
    {% if category != '0' %}
    <span class="tags">, tagged as {{ post.tags | tag_links }}</span>
    {% else %}
    <span class="tags">Tagged as {{ post.tags | tag_links }}</span>
    {% endif %}
  {% endif %}
</footer>
{% endif %}

追記

{%if tag != '0' %}

の対の

{% endif %}

が抜けてたので追加 1

追記ここまで

  • article.html
1
2
{% include post/categories.html %}
{% include post/tags.html %}

_config.yml

tag_dirを追加。

config.yml
1
2
3
4
...
category_dir: blog/categories
tag_dir: blog/tags
...

さらにdefault_asidescuttom/asides/category_list.html追加

source/_layouts/page.html, source/_layouts/post.html

tagsを追加。

  • page.html
1
2
{% if page.categories %}{% include post/categories.html %}{% endif %}
{% if page.tags %}{% include post/tags.html %}{% endif %}
  • post.html
1
2
{% include post/categories.html %}
{% include post/tags.html %}

categories(category)tagsの使い分け

上の様に設定したので、各記事に対して、

  • categoryは1つ(なのでcategoriesではなく categoryを使う)、
  • categoryを乱雑に増やさない様になるべく大きな枠組みの名前で付ける
  • tagsはなるべくcategoryと被らないように使う

という様な自分ルールでやっていってみることにしています。

テンプレートのアップデート(Rakefile)

以前Rakefileをいじってテンプレートを 変更し、 categoriestagsが同じ様に初期設定される様になっていましたが、 これを上記の自分ルールに合うように変更します。

今回はrake new_post['']の引数として、空白区切りで 最初の単語をcategory、後の単語を全てtagsとして登録する様にしました。

Rakefile内のnew_postの所でタイトルを分解してcategorytagsに振り分け、 ymlブロックにcategorycategoriesの代わりに追加して適当な 値を入れるように変更しました。

現在のRakefileは下の様な変更になっています。

Sponsored Links
  1. 。 指摘されてたのをふと見つけてしまったので。。。: Octopressのカスタマイズ

Sponsored Links

« ターミナルでのディレクトリ移動 GeekTool »