at posts/single.html

tDiaryの日記を静的サイトジェネレータで表示したい (2)

前回まででtDiaryの日記をHTML形式でエクスポートできるようになった。 静的サイトジェネレータで取り回ししやすいように、日単位ではなくセクション単位でHTMLを出力している。

ここで悩ましいのが、旧サイトからのリダイレクト設定。 このサイトでも初期の日記は、1日に複数の記事を書いていた。 例えば2008年3月2日の日記はこんな感じ。

セクション単位でHTMLを分けたことにより、移行先のURLはそれぞれ別になる。

  • /diary/20080302.html#p01 → /posts/20080302/p01/
  • /diary/20080302.html#p02 → /posts/20080302/p02/
  • /diary/20080302.html#p03 → /posts/20080302/p03/

ここで問題になるのは、元のページは 20080302.html という1つであり、セクションアンカー (#p01, #p02,#p03) 単位ではリダイレクトできないこと。

しばらく悩んだあげく、セクションごとのページとは別に、日のページも用意することにした。 たしか、はてなダイアリーも同じ構成だったはず。

以前のページからリダイレクトするときに、いちど日のページを経由する手間はあるが、仕方ない。

hugoだと、以下のようにコンテンツとテンプレート (layouts) を作ることで、日のページを表示できる。

content/posts/20080302/_index.md

---
layout: "day"
aliases:
- "/diary/20080302.html"
---

layouts/section/day.html

{{- define "content" -}}
    <div class="page home" posts>
        <h1>{{ .Date.Format "2006-01-02" }}の日記</h1>

        {{- range .RegularPages -}}
            {{- .Render "summary" -}}
        {{ end }}
    </div>
{{- end -}}

これでtDiaryの日記を静的サイトジェネレータで表示する目処がついたかな。

関連する日記