WordPress などの動的 CMS から Octopress に乗り換える記事が目につくが、まだまだプラグインが少ない。 ふと Octopress も jekyll のラッパーだということを思い出し、Wiki に載ってるプラグイン から易しそうなタグクラウドを3つばかり試してみた。
- Jekyll tag cloud / tag pages plugin — Gist
- Migrating from Wordpress to Jekyll - Part 2: Everything you need to know about Jekyll
Yeban’s Weblog - Jekyll - Tag Cloud
結果は、どれも動作しない…
jekyll には site.categories
や site.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 |
|
source/_include/custom/asides/category_list.html
1 2 3 4 |
|
sass/custom/_styles.scss
1 2 3 |
|
_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 |
|
tokkonopapa/octopress - GitHub
Octopress 本家のリポジトリをクローンし、別ブランチ((このリポジトリは削除しました)tagcloud
)に上記ファイルを追加したもの。自分の Octopress リポジトリ内でリモートリポジトリとして追加し、tagcloud
ブランチから追加すべきファイルをチェックアウトする(と出来るハズ)。
後記
作者に「GitHub に載せたんだけど、ライセンスとかどう?」と聞いたら、「MIT でいいよ」とのこと。
ただ Ruby という言語を触るのは今回が初めてなため、無駄の省き方も分かっていない。さらに、今回のようなプラグインを、Git という仕組みを使ってどうやったら本体にスムーズに導入できるのかも課題。
老練な Git 職人さん、白馬に乗った Rubiest さんに突っ込んでもらえると嬉しい :D