フロントマター
Starlightでは、フロントマターに値を設定することで、MarkdownとMDXのページを個別にカスタマイズできます。たとえば通常のページでは、title
とdescription
フィールドを設定します。
フロントマターのフィールド
title
(必須)
type: string
すべてのページにタイトルを指定する必要があります。これは、ページの上部、ブラウザのタブ、およびページのメタデータとして表示されます。
description
type: string
ページに関する説明文はページのメタデータとして使用され、また検索エンジンやソーシャルメディアのプレビューでも使用されます。
slug
type: string
ページのスラグを上書きします。詳しくは、Astroドキュメントの「カスタムスラグの定義」を参照してください。
editUrl
type: string | boolean
グローバルの editLink
設定を上書きします。false
を設定して特定のページの「ページを編集」リンクを無効にするか、あるいはこのページのコンテンツを編集する代替URLを指定します。
head
type: HeadConfig[]
フロントマターのhead
フィールドを使用して、ページの<head>
にタグを追加できます。これにより、カスタムスタイル、メタデータ、またはその他のタグを単一のページに追加できます。グローバルのhead
オプションと同様です。
tableOfContents
type: false | { minHeadingLevel?: number; maxHeadingLevel?: number; }
グローバルのtableOfContents
設定を上書きします。表示したい見出しのレベルをカスタマイズするか、あるいはfalse
に設定して目次を非表示とします。
template
type: 'doc' | 'splash'
default: 'doc'
ページのレイアウトテンプレートを設定します。ページはデフォルトで'doc'
レイアウトを使用します。ランディングページ向けにサイドバーのない幅広のレイアウトを使用するには、'splash'
を設定します。
hero
type: HeroConfig
ヒーローコンポーネントをページの上部に追加します。template: splash
との相性が良いでしょう。
リポジトリからの画像の読み込みなど、よく使われるオプションの設定例は以下となります。
ライトモードとダークモードで、異なるバージョンのヒーロー画像を表示できます。
HeroConfig
banner
type: { content: string }
ページの上部にお知らせ用のバナーを表示します。
content
の値には、リンクやその他のコンテンツ用のHTMLを含められます。たとえば以下のページでは、example.com
へのリンクを含むバナーを表示しています。
lastUpdated
type: Date | boolean
グローバルのlastUpdated
オプションを上書きします。日付を指定する場合は有効なYAMLタイムスタンプである必要があり、ページのGit履歴に保存されている日付を上書きします。
prev
type: boolean | string | { link?: string; label?: string }
グローバルのpagination
オプションを上書きします。文字列を指定すると生成されるリンクテキストが置き換えられ、オブジェクトを指定するとリンクとテキストの両方を上書きできます。
next
type: boolean | string | { link?: string; label?: string }
次のページへのリンクに対して、prev
と同様の設定ができます。
pagefind
type: boolean
default: true
ページをPagefindの検索インデックスに含めるかどうかを設定します。ページを検索結果から除外するには、false
に設定します。
draft
type: boolean
default: false
このページをドラフトとしてマークし、本番ビルドと自動生成されるリンクのグループから除外するかどうかを設定します。ページをドラフトとしてマークし、開発中にのみ表示するにはtrue
に設定します。
sidebar
type: SidebarConfig
自動生成されるリンクのグループを使用している際に、サイドバーにページをどのように表示するかを設定します。
SidebarConfig
label
type: string
default: ページのtitle
自動生成されるリンクのグループ内に表示される、ページのサイドバー上でのラベルを設定します。
order
type: number
自動生成されるリンクのグループをソートする際の、このページの順番を設定します。小さな数値ほどリンクグループの上部に表示されます。
hidden
type: boolean
default: false
自動生成されるサイドバーのグループにこのページを含めないようにします。
badge
type: string | BadgeConfig
自動生成されるリンクのグループに表示されたとき、サイドバーのページにバッジを追加します。文字列を使用すると、バッジはデフォルトのアクセントカラーで表示されます。オプションで、text
とvariant
、class
フィールドをもつBadgeConfig
オブジェクトを渡してバッジをカスタマイズできます。
attrs
type: Record<string, string | number | boolean | undefined>
自動生成されるリンクのグループ内に表示されるサイドバーのページリンクに追加するHTML属性。
フロントマタースキーマをカスタマイズする
Starlightのdocs
コンテンツコレクションのフロントマタースキーマは、docsSchema()
ヘルパーを使用してsrc/content/config.ts
で設定されています。
コンテンツコレクションのスキーマについて詳しくは、Astroドキュメントの「コレクションスキーマの定義」を参照してください。
docsSchema()
は以下のオプションを受け取ります。
extend
type: ZodスキーマまたはZodスキーマを返す関数
default: z.object({})
docsSchema()
のオプションでextend
を設定すると、Starlightのスキーマを追加のフィールドで拡張できます。値はZodスキーマである必要があります。
次の例では、description
を必須にするために厳し目の型を指定し、さらにオプションのcategory
フィールドを新規追加しています。
Astroのimage()
ヘルパーを利用するには、拡張したスキーマを返す関数を使用します。