Hexoのtitleタグを最適化する

ブログのtitleタグをどのページとも被らないように設定するのは、カテゴリー・タグページやそれぞれの2ページ目などを加味していくと、意外に大変だったりします。

とりあえず試行錯誤していい感じになったので、このブログの物をそのままメモ。

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

EJS

(2020-07-30) 全体のアーカイブでtitleがundefinedになるのを修正しました。

<%
var title;
if(is_home()){
    title = '';
} else if (is_archive()){
    title = 'アーカイブ';
    if(page.year){
      title += ': ' + page.year + '年';
    }
    if(page.month){
      title += page.month + '月';
    }
    title += ' - ';
} 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ページ目以降アーカイブ: 〇〇〇〇年〇月 - ページ[数字] - [ブログ名]

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