課題
デフォルトではファイル名をもとに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が変わることを防ぎたかった。