paper テーマは、記事ページのフッタ部分に任意のタグを追加できなかったため、themes/paper/layouts/_default/single.html
に次のようなコードを追加しました。
diff --git a/themes/paper/layouts/_default/single.html b/themes/paper/layouts/_default/single.html
index 6d0935e..57c7b4e 100644
--- a/themes/paper/layouts/_default/single.html
+++ b/themes/paper/layouts/_default/single.html
@@ -17,6 +17,7 @@
{{ end }}
</ul>
{{ end }}
+ {{ partial "post-footer-include.html" . }}
</footer>
<!-- Comments system area start -->
{{ if not (eq .Params.comments false) }}
Hugo では、各記事のテンプレートファイルは single.html
です。このファイルの任意のタグを挿入したい場所に {{ partial "post-footer-include.html" . }}
というコードを挿入しています。これは、post-footer-include.html
という部分テンプレート(Pertial Templates)が存在すればそれを挿入するというコードです。この変更で各記事のフッタ部分に任意のコードを挿入できるようになります。このようにどうしても Hugo テーマに手を加える必要がある場合、このように部分テンプレートを利用してテーマのコードへの変更を最小限(ここでは1行)にするようにすることで、テーマ自体のアップデートにもコンフリクトができる限り起きにくいようにしています(Hugo に明るくないためもしかしたらよりよい方法があるかもしれません)。
次に部分テンプレートを layouts/pertials/post-footer-include.html
として作成します。
<div class="post-footer-include">
<a class="edit-this-page" href="https://github.com/superbrothers/text.superbrothers.dev/tree/master/content/{{$.Page.File.Path}}">Edit this page</a>
</div>
ここは、GitHub リポジトリの URL をベタ書きしています。見てわかるとおり、superbrothers/text.superbrothers.dev
リポジトリの master ブランチを指しています。その後のパスで {{$.Page.File.Path}}
を使っています。これは「現在の記事のファイルのパス」が格納されている変数です。例えばこのブログの https://text.superbrothers.dev/190622-how-to-stop-twitter-auto-linking-urls/ の $.Page.File.Path
は、190622-how-to-stop-twitter-auto-linking-urls.md
になります。結果として上の変更で挿入した「Edit this Page」リンクの遷移先 URL は、https://github.com/superbrothers/text.superbrothers.dev/tree/master/content/190622-how-to-stop-twitter-auto-linking-urls.md
となり、記事ページから GitHub リポジトリ上のマークダウンファイルへのリンクになります。
もちろん、自身のブログやプロジェクトサイトで上記を実施する場合は、ベースとなる URL を自身のブログやプロジェクトサイトの GitHub リポジトリに合わせて変更してください。
今回は各記事ページに「Edit this page」リンクを追加して、小さな変更のしやすさ向上や PR がもらいやすいようにする方法を紹介しました。Hugo テーマを弄らないと行けない場合、テーマのコードを大きく変更してしまうとアップデートに追従するのが難しくなるので、部分テンプレートを使う方法も紹介しました。実際にこのブログにリンクを追加したコードは https://github.com/superbrothers/text.superbrothers.dev/commit/bcdabf5778ca9b5ab61341ceaa678b7e3fdf94ac から参照してください。
というわけで、この記事ページにもこの下に「Edit this page」リンクが見えるはずなので、もし何か間違えがあれば遠慮なく PR やイシューの作成をお願いします。