WordPress のテンプレート階層と同じ発想で、ページごとに違う見た目に切り替えられます。URL は /<slug> のまま変わらず、テーマが内部のレンダリングだけ替えます。

仕組み

  1. 中間モデルが各ページに template: string を解決する(詳細は Architecture)
  2. テーマの _dispatcher.astro が template 名から .astro コンポーネントへ振り分ける
  3. URL は変わらない、中の構造だけ変わる

指定方法(優先度順)

  1. ページ本文の #template/<name> タグ
  2. .site page の YAML の templates: マッピング
  3. デフォルトは 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つで検証します。