JavaScriptを有効にしてください

[Hugo] コンテンツのurlを指定する

 ·  ☕ 2 分で読めます

課題

デフォルトではファイル名をもとにurlが決まるが、ID的な感じで適当な文字列にしたかった。

この記事の前提

  • hugo v0.96.0+extended

参考サイト

対応メモ

ディレクトリ構成

content/
└── ja
    ├── _index.md
    ├── about
    │   └── index.ja.md
    ├── archive
    │   └── _index.ja.md
    └── posts
        ├── _index.ja.md
        ├── my-first-post.ja.md
        └── set_slug.md

多言語対応してるわけではないけど、ja以下にファイルがある。

デフォルトの場合

my-first-post.ja.mdを表示する場合は/posts/my-first-post/にアクセスする
この形式で問題なければ特に設定を行う必要はない。

slugを設定した場合

my-first-post.ja.mdを表示する場合は/posts/{記事に記載したslug}/にアクセスする

各記事にslugを記載しておくとファイル名よりもslugが優先される。

---
title: "[Hugo] コンテンツのurlを指定する"
date: 2022-12-28T09:31:40+09:00
slug: 9d95546a611b0c0f58d235ebc7941143
draft: true
---

slugを自動的に設定したい時

自動生成時に使用されるテンプレートに記述を追加することで対応可能

archetypes/default.md

---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
slug: {{ .File.UniqueID }}
draft: true
---

.File.UniqueIDを使用することでファイルごとにユニークになるように値を設定できる。
一度指定したslugを変更したくなるときは多分ないのでこの方法で設定される値で十分だと思った。

参考
https://gohugo.io/variables/files/

その他

https://gohugo.io/content-management/urls/

config.tomlで設定する方法もあり、この方法だと個別の記事で設定する必要はない。
日付等を読み取る設定もあり、日付を変えた時には生成されるurlも変わる。
ファイルを編集したりディレクトリ構成を変えたりした時に意図せずurlが変わることを防ぎたかった。


書いた人
keee
Webエンジニア

目次