2013/01/16

nanocカスタマイズ‐カテゴリの日本語化

当サイトではTagをカテゴリとしています。Tagを日本語にすると日本語のフォルダが作成され、リンク不能となります。
当サイトではTagはローマ字とし、Tagに日本語の別名を付けて表示するようにしました。
サイトフォルダの直下に別名用のYAMLファイルを配置しました。ファイル名はyknk.yamlとしました。
yknk.yamlの内容
tagalias:
  cooking: 男の食彩会
’cooking’タグの別名は’男の食彩会’としました。
このYAMLデータを取り出すメソッドをyknk.rbファイルに記述します。yknk.rbファイルはlibフォルダに配置します。
libフォルダに配置したファイルは自動的に読み込んでくれるようです。
lib/yknk.rbファイル
module Yknk
  def tagalias(tag)
    tag_alias = YAML.load_file("yknk.yaml")["tagalias"][tag]
    tag_alias = tag if tag_alias.nil?
    return tag_alias
  end

  module_function :tagalias

  def link_for_tag(tag, base_url, tag_alias = nil)
    tag_alias = tag if tag_alias.nil?
    %[<a href="#{h base_url}#{h tag}" rel="tag">#{h tag_alias}</a>]
  end

  module_function :link_for_tag
end
tagaliasはyknk.yamlファイルからTagの別名を取得するメソッドです。
link_for_tagはカテゴリ一覧ページへリンクするためのメソッドです。
他のメソッドとの名前の競合を避けるために、それぞれモジュール関数としました。
link_for_tagはNanoc::Helpers::Tagging(tagging.rb)のlink_for_tagメソッドを改造し、Tagの別名を表示するようにしました。
layouts/_tag_summary.htmlファイルの
<li><%= link_for_tag(k, "/tags/") %> x <%= v %></li>
<li><%= Yknk.link_for_tag(k, "/tags/", Yknk.tagalias(k)) %> (<%= v %>)</li>
に変更しました。