2013/01/16
nanocカスタマイズ‐カテゴリの日本語化
当サイトではTagをカテゴリとしています。Tagを日本語にすると日本語のフォルダが作成され、リンク不能となります。
当サイトではTagはローマ字とし、Tagに日本語の別名を付けて表示するようにしました。
サイトフォルダの直下に別名用のYAMLファイルを配置しました。ファイル名はyknk.yamlとしました。
yknk.yamlの内容
このYAMLデータを取り出すメソッドをyknk.rbファイルに記述します。yknk.rbファイルはlibフォルダに配置します。
libフォルダに配置したファイルは自動的に読み込んでくれるようです。
lib/yknk.rbファイル
link_for_tagはカテゴリ一覧ページへリンクするためのメソッドです。
他のメソッドとの名前の競合を避けるために、それぞれモジュール関数としました。
link_for_tagはNanoc::Helpers::Tagging(tagging.rb)のlink_for_tagメソッドを改造し、Tagの別名を表示するようにしました。
layouts/_tag_summary.htmlファイルの
当サイトでは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 endtagaliasは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>に変更しました。