Hexoの機能拡張とヘルパー

Hexoの機能拡張とヘルパー

2020-06-21


多言語対応

Hexoでは表示する言語を切り替えることができる。ポイントは、多言語対応ファイルi18n、ヘルパーによる参照

ソフトウエアの国際化はi18nと呼ばれ、ソフトウエアの多言語対応が可能になる。

Hexoだとthemes配下のlanguagesにあり、各国語に対応できる。

Hexoでは下記の方法で埋め込む

<%= __(‘author_icon’) %>

Hexoのヘルパー

Hexoのテンプレートでは、繰り返し使用する関数などのソースコードをヘルパーで簡単に呼び出すことができます。
ヘルパーはスニペット(再利用可能なソースコード)を呼び出して、テンプレートで使用することができます。

Hexo helpers

ヘルパーをテンプレートに記述すると、よく使用する処理コードを簡単にコールできます。
引数と返り値を持った関数をヘルパーに定義できます。

Hexo で helper 的な共通関数を定義する

Hexoタグ作成のトリック

ページ種別をヘルパーで判別させてみる

テンプレートが読み込まれたとき、どのようなページ種別をもつか知りたいときがある。
ヘルパーには、あらかじめこのような関数が用意されている。

考え方

例えば、is_archive, is_category, is_tag, is_homeというヘルパーを使うと、現在のテンプレートが処理するページ種別を取得することができる。
layout.ejsが呼び出すページ種別を知るため、判別ルールis_home() == trueで条件判別させてlayout.ejsの処理時に表示させた。

1
2
3
4
5
6
<p>is_archive:  <%- is_archive() %>   </p><hr>
<p>is_category: <%- is_category() %> </p><hr>
<p>is_tag: <%- is_tag() %> </p><hr>
<p>is_home: <%- is_home() %> </p><hr>
<p>is_post: <%- is_post() %> </p><hr>
<p>is_page: <%- is_page() %> </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(テンプレートの代用処理)でテンプレート処理を行う。

ヘルパーとパンくずリスト

Hexoでプラグインを使わずパンくずリストを表示する