T.I.D.

Git や GitHub と戯れる、オレオレ的おとなの遊び場

Octopress用Tag Cloudプラグインをリリースします

WordPress などの動的 CMS から Octopress に乗り換える記事が目につくが、まだまだプラグインが少ない。 ふと Octopressjekyll のラッパーだということを思い出し、Wiki に載ってるプラグイン から易しそうなタグクラウドを3つばかり試してみた。

結果は、どれも動作しない…

jekyll には site.categoriessite.tags という Template Data があるが、単に Octopress に tags が実装されていないだけだと思う。

ということで、3番目のコードを動くようにしてみた 。文字の大きさをログスケールで変えたりしていて、イイ感じ。

他にも検索してみると、台湾サイトの記事「あなたのOctopressの記事のカテゴリを高めるために」(by Google 翻訳)で、サイドバーにタグクラウドを作るコード(ライセンスは非表記)が紹介されているのを発見。中国系 Octopress サイトでは結構使われている様子。

で、試してみたが、rake preview を実行時、3秒に1度 regenerate してしまい調子が悪い。generate 時にテンプレートの HTML ファイルをダイレクトに生成しているため、preview 時の監視プロセスにより更新判断され、再 generate されてしまうのだ。

ということで、この無限地獄を解消すべく、Octopress プラグインのルールに従って作り変えてみた。

使い方

{% tag_cloud [counter:true] %}
{% category_list [counter:true] %}

オプション

  • counter:
    タグの後ろにカッコ付きで記事数を付ける場合には true を指定する

使用例

source/_include/custom/asides/tag_cloud.html
1
2
3
4
<section>
  <h1>Tag Cloud</h1>
    <span id="tag-cloud">{% tag_cloud counter:true %}</span>
</section>
source/_include/custom/asides/category_list.html
1
2
3
4
<section>
  <h1>Categories</h1>
    <ul id="category-list">{% category_list counter:true %}</ul>
</section>
sass/custom/_styles.scss
1
2
3
#tag-cloud {
  line-height: 2.2em;
}
_config.yml
# list each of the sidebar modules you want to include, in the order you want them to appear.
# To add custom asides, create files in /source/_includes/custom/asides/ and add them to the list like 'custom/asides/custom_aside_name.html'
default_asides: [custom/asides/tag_cloud.html, custom/asides/tag_cloud.html, ...]
適用例

ダウンロードとインストール

  • tokkonopapa/octopress-tagcloud - GitHub
    サイドバーに表示するために必要な最低限追加すべきファイルをアップしてある。 自分の Octopress リポジトリとは別にクローンし、ファイルをコピーして使う。
1
2
3
4
5
6
7
8
9
├─ plugins/
│  └── tag_cloud.rb
└─ source/
   └─ _includes/
      └─ custom/
         └─ asides/
            ├─ category_list.html
            └─ tag_cloud.html
  • tokkonopapa/octopress - GitHub
    Octopress 本家のリポジトリをクローンし、別ブランチ(tagcloud)に上記ファイルを追加したもの。自分の Octopress リポジトリ内でリモートリポジトリとして追加し、tagcloud ブランチから追加すべきファイルをチェックアウトする(と出来るハズ)。(このリポジトリは削除しました)

後記

作者に「GitHub に載せたんだけど、ライセンスとかどう?」と聞いたら、「MIT でいいよ」とのこと。

ただ Ruby という言語を触るのは今回が初めてなため、無駄の省き方も分かっていない。さらに、今回のようなプラグインを、Git という仕組みを使ってどうやったら本体にスムーズに導入できるのかも課題。

老練な Git 職人さん、白馬に乗った Rubiest さんに突っ込んでもらえると嬉しい :D

Comments