rcmdnk's blog
Last update

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

以下の手順で、各ファイルを変更してき、 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は下の様な変更になっています。

Rakefile.diff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
diff --git a/Rakefile b/Rakefile
index 471b227..a092f76 100644
--- a/Rakefile
+++ b/Rakefile
@@ -23,8 +23,8 @@ deploy_dir      = "_deploy"   # deploy directory (for Github pages deployment)
 stash_dir       = "_stash"    # directory to stash posts for speedy generation
 posts_dir       = "_posts"    # directory for blog files
 themes_dir      = ".themes"   # directory for blog files
-new_post_ext    = "markdown"  # default new post file extension when using the new_post task
-new_page_ext    = "markdown"  # default new page file extension when using the new_page task
+new_post_ext    = "md"        # default new post file extension when using the new_post task
+new_page_ext    = "md"        # default new page file extension when using the new_page task
 server_port     = "4000"      # port for preview server eg. localhost:4000


@@ -98,6 +98,9 @@ task :new_post, :title do |t, args|
     title = get_stdin("Enter a title for your post: ")
   end
   raise "### You haven't set anything up yet. First run `rake install` to set up an Octopress theme." unless File.directory?(source_dir)
+  title_words = title.split(' ')
+  tags = title_words
+  category = tags.shift
   mkdir_p "#{source_dir}/#{posts_dir}"
   filename = "#{source_dir}/#{posts_dir}/#{Time.now.strftime('%Y-%m-%d')}-#{title.to_url}.#{new_post_ext}"
   if File.exist?(filename)
@@ -110,8 +113,20 @@ task :new_post, :title do |t, args|
     post.puts "title: \"#{title.gsub(/&/,'&amp;')}\""
     post.puts "date: #{Time.now.strftime('%Y-%m-%d %H:%M')}"
     post.puts "comments: true"
-    post.puts "categories: "
+    post.puts "category: #{category}"
+    post.puts "tags: #{tags}"
+    post.puts "keywords: #{title.gsub(' ',', ')}"
+    #post.puts "description: "
+    post.puts "published: false"
+    post.puts ""
     post.puts "---"
+    post.puts ""
+    post.puts "<!-- more -->"
+    post.puts ""
+    post.puts "** Contents **"
+    post.puts "{:TOC}"
+    post.puts ""
+    post.puts ""
   end
 end

@@ -147,6 +162,7 @@ task :new_page, :filename do |t, args|
       page.puts "comments: true"
       page.puts "sharing: true"
       page.puts "footer: true"
+      page.puts "published: false"
       page.puts "---"
     end
   else
Sponsored Links
  1. 。 指摘されてたのをふと見つけてしまったので。。。: Octopressのカスタマイズ

Sponsored Links

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

}