コンテンツにスキップ

ルートデータ

Starlight のルートデータオブジェクトには、現在のページに関する情報が含まれています。
Starlight のデータモデルがどのように機能するかについては、「ルートデータ」ガイド を参照してください。

Astro コンポーネント内では、Astro.locals.starlightRoute からルートデータにアクセスできます。

src/components/Custom.astro
---
const { hasSidebar } = Astro.locals.starlightRoute;
---

ルートミドルウェア 内では、ミドルウェア関数に渡される context オブジェクトからルートデータにアクセスします。

src/routeData.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
export const onRequest = defineRouteMiddleware((context) => {
const { hasSidebar } = context.locals.starlightRoute;
});

starlightRoute オブジェクトには、次のプロパティがあります。

型: 'ltr' | 'rtl'

ページの文字方向。

型: string

このページのロケールを示す BCP-47 言語タグ。例: en, zh-CN, pt-BR

型: string | undefined

言語が提供されるベースパス。ルートロケールスラッグの場合は undefined

型: string

このページのロケールに対応するサイトタイトル。

型: string

サイトタイトルの href 属性に設定される値で、トップページへのリンクです。
多言語サイトの場合は現在のロケールを含みます(例: /en//zh-cn/)。

型: string

コンテンツファイル名から生成されたこのページのスラッグ。

このプロパティは非推奨であり、今後のバージョンで削除される予定です。
Starlight の docsLoader を使用して新しいコンテンツレイヤー API に移行し、代わりに id プロパティを使用してください。

型: string

legacy.collections フラグを使用している場合は、コンテンツファイル名に基づくこのページの一意の ID、またはスラッグ。

型: boolean | undefined

現在の言語で未翻訳のページが既定ロケールのフォールバックコンテンツを使用している場合に true
多言語サイトでのみ使用されます。

型: { dir: 'ltr' | 'rtl'; lang: string }

ページコンテンツのロケールメタデータ。
ページがフォールバックコンテンツを使用している場合、トップレベルのロケール値とは異なることがあります。

現在のページに対応する Astro コンテンツコレクションのエントリ。
現在のページの frontmatter 値は entry.data に含まれます。

entry: {
data: {
title: string;
description: string | undefined;
// その他の値
}
}

このオブジェクトの構造については、Astro の Collection Entry Type リファレンスを参照してください。

型: SidebarEntry[]

このページに対応するサイトナビゲーションサイドバーのエントリ。

型: boolean

このページでサイドバーを表示するかどうか。

型: { prev?: Link; next?: Link }

サイドバーが有効な場合、前後のページへのリンク。

型: { minHeadingLevel: number; maxHeadingLevel: number; items: TocItem[] } | undefined

このページの目次(有効な場合)。

型: { depth: number; slug: string; text: string }[]

現在のページから抽出されたすべての Markdown 見出しの配列。
Starlight の設定に従う目次コンポーネントを作成したい場合は、代わりに toc を使用してください。

型: Date | undefined

このページが最後に更新された日時を表す JavaScript の Date オブジェクト(有効な場合)。

型: URL | undefined

このページを編集できるアドレスの URL オブジェクト(有効な場合)。

型: HeadConfig[]

現在のページの <head> に含めるすべてのタグの配列。
<title><meta charset="utf-8"> などの重要なタグが含まれます。

ルートミドルウェアモジュールに型を付けるには、defineRouteMiddleware() ユーティリティを使用します。

src/routeData.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
export const onRequest = defineRouteMiddleware((context) => {
// ...
});

Starlight のルートデータを扱うコードを書く場合、StarlightRouteData 型をインポートして
Astro.locals.starlightRoute の構造と一致させることができます。

次の例では、usePageTitleInTOC() 関数がルートデータを更新し、目次内の最初の項目ラベルをデフォルトの「Overview」から現在のページタイトルに置き換えます。
StarlightRouteData 型を使うことで、ルートデータの変更が正しいかどうかを検証できます。

src/route-utils.ts
import type { StarlightRouteData } from '@astrojs/starlight/route-data';
export function usePageTitleInTOC(starlightRoute: StarlightRouteData) {
const overviewLink = starlightRoute.toc?.items[0];
if (overviewLink) {
overviewLink.text = starlightRoute.entry.data.title;
}
}

この関数は次のようにルートミドルウェアから呼び出すことができます。

src/route-middleware.ts
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
import { usePageTitleInTOC } from './route-utils';
export const onRequest = defineRouteMiddleware((context) => {
usePageTitleInTOC(context.locals.starlightRoute);
});