HexoのURL関連のテンプレート変数まとめ

HexoにはURL出力関連の変数がたくさん用意されているのですが、種類がたくさんあってあまりにも煩雑なので整理してみます。

変数を一度に出力してみる

<div>
  config.url: <%= config.url %> <br>
  path: <%= path %> <br>
  url: <%= url %> <br>
  page.permalink: <%= page.permalink %><br>
  url_for(path): <%= url_for(path) %> <br>
  full_url_for(path): <%= full_url_for(path) %> <br>
  decodeURI(full_url_for(path)): <%= decodeURI(full_url_for(path)) %>
</div>

Hexoのバージョンは4.2.0です。上のようなHTMLをテンプレートに書いてデバッグしました。

また、当ブログではconfigからcategoriesディレクトリをcategoryへ変更しています。

検証結果

トップページ

変数URL
config.urlhttps://pixelog.net
pathindex.html
urlhttps://pixelog.net/index.html
page.permalink(undefined)
url_for(path)/index.html
full_url_for(path)https://pixelog.net/index.html
decodeURI(full_url_for(path))https://pixelog.net/index.html

2ページ目以降

変数URL
config.urlhttps://pixelog.net
pathpage/2/index.html
urlhttps://pixelog.net/page/2/index.html
page.permalink(undefined)
url_for(path)/page/2/index.html
full_url_for(path)https://pixelog.net/page/2/index.html
decodeURI(full_url_for(path))https://pixelog.net/page/2/index.html

カテゴリーページ(英文字のみの場合)

変数URL
config.urlhttps://pixelog.net
pathcategory/web/index.html
urlhttps://pixelog.net/category/web/index.html
page.permalink(undefined)
url_for(path)/category/web/index.html
full_url_for(path)https://pixelog.net/category/web/index.html
decodeURI(full_url_for(path))https://pixelog.net/category/web/index.html

カテゴリページ(日本語が含まれる場合)

変数URL
config.urlhttps://pixelog.net
pathcategory/雑記/index.html
urlhttps://pixelog.net/category/%E9%9B%91%E8%A8%98/index.html
page.permalink(undefined)
url_for(path)/category/%E9%9B%91%E8%A8%98/index.html
full_url_for(path)https://pixelog.net/category/%E9%9B%91%E8%A8%98/index.html
decodeURI(full_url_for(path))https://pixelog.net/category/雑記/index.html

記事ページ

変数URL
config.urlhttps://pixelog.net
pathpost/tv55m8/index.html
urlhttps://pixelog.net/post/tv55m8/index.html
page.permalinkhttps://pixelog.net/post/tv55m8/
url_for(path)/post/tv55m8/index.html
full_url_for(path)https://pixelog.net/post/tv55m8/index.html
decodeURI(full_url_for(path))https://pixelog.net/post/tv55m8/index.html

固定ページ

変数URL
config.urlhttps://pixelog.net
pathabout/index.html
urlhttps://pixelog.net/about/index.html
page.permalinkhttps://pixelog.net/about/index.html
url_for(path)/about/index.html
full_url_for(path)https://pixelog.net/about/index.html
decodeURI(full_url_for(path))https://pixelog.net/about/index.html

まとめ

pathurlはconfigの設定と関係なくindex.htmlありの形になります。

page.permalinkは記事・固定ページ以外ではundefinedになるので使いづらい印象です。また、trailing_indexがtrueになっている場合、記事ページと固定ページでindex.htmlの有無に差が出ます。バグなのだろうか?

テンプレート内では、url_for(path)の省略絶対パスの形が使い良いと思います。