Hexoのtitleタグを最適化する

ブログのtitleタグをどのページとも被らないように設定するのは、カテゴリー・タグページやそれぞれの2ページ目などを加味していくと、意外に大変だったりします。とりあえず試行錯誤していい感じになったので、このブログの物をそのままメモ。

titleタグを後で変更すると、Google Analytcisで別ページ扱いになってしまい、データがバラバラに散ってしまうので、サイトを開設したら早めに決めた方がいいと思います。

EJS

<%
var title;
if(is_home()){
    title = '';
} else if (is_archive()){
    if(page.month){
      title = page.year + '年' + page.month + '月' + ' - ';
    } else {
      title = page.year + '年' + ' - ';
    }
} else if (is_category()){
    title = 'カテゴリー: ' + page.category + ' - ';
} else if (is_tag()){
    title = 'タグ: ' + page.tag + ' - ';
} else {
    title = page.title + ' - ';
}
if(page.current > 1){
    title += 'ページ'+ page.current + ' - ';
}
title += config.title;
%>
<title><%= title %></title>

タイトル例

titleは下のような感じで表示されます。

ページtitle例
トップ 2ページ目以降ページ[数字] - [ブログ名]
記事[記事名] - [ブログ名]
カテゴリーカテゴリー: [カテゴリー名] - [ブログ名]
カテゴリー 2ページ目以降カテゴリー: [カテゴリー名] - ページ[数字] - [ブログ名]
タグタグ: [タグ名] - [ブログ名]
タグ 2ページ目以降タグ: [タグ名] - ページ[数字] - [ブログ名]
月アーカイブ〇〇〇〇年〇月 - [ブログ名]
月アーカイブ 2ページ目以降〇〇〇〇年〇月 - ページ[数字] - [ブログ名]
年アーカイブ〇〇〇〇年 - [ブログ名]
年アーカイブ 2ページ目以降〇〇〇〇年 - ページ[数字] - [ブログ名]

日別アーカイブは対応させてないんですが、静的サイトジェネレーターで日別アーカイブを使うと膨大な数のページを生成することになるので、そんなもの使っている人はいないよね、という判断です。