WordPress のテンプレート階層と同じ発想で、ページごとに違う見た目に切り替えられます。URL は /<slug> のまま変わらず、テーマが内部のレンダリングだけ替えます。
仕組み
- 中間モデルが各ページに template: string を解決する(詳細は Architecture)
- テーマの _dispatcher.astro が template 名から .astro コンポーネントへ振り分ける
- URL は変わらない、中の構造だけ変わる
指定方法(優先度順)
- ページ本文の
#template/<name>タグ - .site page の YAML の
templates:マッピング - デフォルトは
page
theme-default の提供テンプレート
- page 通常ページ(デフォルト)。タイトル + タグチップ + 本文 + backlinks
- profile プロフィール系。中央ヒーロー + 本文。タグチップなし
例1: ページに直接付ける
ページ本文末尾にこのように書きます(空行は入れない;Cosense は空行で code ブロックが終わる):
About Me
私についての説明...
#publish #template/profile例2: .site で一括宣言
自作テンプレート
テーマを自作 / fork する場合は templates/ に .astro を1ファイル足して _dispatcher.astro の TEMPLATES に登録するだけ。未知のテンプレート名は自動で page にフォールバックします。
検証
Doctor が Template usage と Template mapping titles の2つで検証します。