
Hexoの機能拡張とヘルパー
2020-06-21
多言語対応
Hexoでは表示する言語を切り替えることができる。ポイントは、多言語対応ファイルi18n、ヘルパーによる参照
ソフトウエアの国際化はi18nと呼ばれ、ソフトウエアの多言語対応が可能になる。
Hexoだとthemes配下のlanguagesにあり、各国語に対応できる。
Hexoでは下記の方法で埋め込む
<%= __(‘author_icon’) %>
Hexoのヘルパー
Hexoのテンプレートでは、繰り返し使用する関数などのソースコードをヘルパーで簡単に呼び出すことができます。
ヘルパーはスニペット(再利用可能なソースコード)を呼び出して、テンプレートで使用することができます。
ヘルパーをテンプレートに記述すると、よく使用する処理コードを簡単にコールできます。
引数と返り値を持った関数をヘルパーに定義できます。
ページ種別をヘルパーで判別させてみる
テンプレートが読み込まれたとき、どのようなページ種別をもつか知りたいときがある。
ヘルパーには、あらかじめこのような関数が用意されている。
考え方
例えば、is_archive, is_category, is_tag, is_homeというヘルパーを使うと、現在のテンプレートが処理するページ種別を取得することができる。
layout.ejsが呼び出すページ種別を知るため、判別ルールis_home() == true
で条件判別させてlayout.ejsの処理時に表示させた。
1 | <p>is_archive: <%- is_archive() %> </p><hr> |
結果
投稿に関するページ
home | post | page | archive | category | tag | |
---|---|---|---|---|---|---|
index.ejs | post.ejs | page.ejs | archive.ejs | category.ejs | tag.ejs | |
index(トップ) | ○ | |||||
post(記事ページ) | ^ | ○ | ||||
page(固定ページ) | ^ | ^ | ○ | |||
archive(アーカイブ) | ^ | ^ | ^ | ○ |
アーカイブに関するページ
home | post | page | archive | category | tag | |
---|---|---|---|---|---|---|
index.ejs | post.ejs | page.ejs | archive.ejs | category.ejs | tag.ejs | |
archive(アーカイブ) | ○ | |||||
tag(タグ) | ^ | ○ | ||||
category(カテゴリー) | ^ | ^ | ○ |
ページ種別に該当の(専用)テンプレートが存在しない場合、fallback(テンプレートの代用処理)でテンプレート処理を行う。