ルートデータ
Starlightのルートデータオブジェクトには、現在のページに関する情報が含まれています。Starlightのデータモデルがどのように機能するかについては、「ルートデータ」ガイド を参照してください。
Astroコンポーネント内では、Astro.locals.starlightRouteからルートデータにアクセスできます。
---const { hasSidebar } = Astro.locals.starlightRoute;---ルートミドルウェア内では、ミドルウェア関数に渡されるcontextオブジェクトからルートデータにアクセスします。
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
export const onRequest = defineRouteMiddleware((context) => { const { hasSidebar } = context.locals.starlightRoute;});starlightRoute
Section titled “starlightRoute”starlightRouteオブジェクトは、以下のプロパティをもちます。
型: 'ltr' | 'rtl'
ページの書字方向。
型: string
このページのロケールのBCP-47言語タグ。たとえばen、zh-CN、pt-BRなど。
locale
Section titled “locale”型: string | undefined
言語が配信されるベースパス。ルートロケールスラグの場合はundefinedとなります。
siteTitle
Section titled “siteTitle”型: string
このページのロケールのサイトタイトル。
siteTitleHref
Section titled “siteTitleHref”型: string
サイトタイトルのhref属性の値。たとえば/など、ホームページへのリンクとなります。多言語サイトの場合、たとえば/en/や/zh-cn/など、現在のロケールが含まれます。
型: string
コンテンツファイル名から生成されたページのスラグ。
このプロパティは非推奨であり、Starlightの将来のバージョンで削除される予定です。StarlightのdocsLoaderを使用して新しいコンテンツレイヤーAPIに移行し、代わりにidプロパティを使用してください。
型: string
このページのスラグ。legacy.collectionsフラグを使用している場合は、コンテンツファイル名に基づくページの一意のIDとなります。
isFallback
Section titled “isFallback”型: boolean | undefined
このページが現在の言語で未翻訳であり、デフォルトロケールのフォールバックコンテンツを使用している場合はtrueとなります。多言語サイトでのみ使用されます。
entryMeta
Section titled “entryMeta”型: { dir: 'ltr' | 'rtl'; lang: string }
ページコンテンツのロケールメタデータ。ページがフォールバックコンテンツを使用している場合、トップレベルのロケール値とは異なる場合があります。
現在のページのAstroコンテンツコレクションのエントリー。entry.dataには、現在のページのフロントマターの値が含まれます。
entry: { data: { title: string; description: string | undefined; // その他の値 }}このオブジェクトの構造については、Astroのコレクションエントリー型リファレンスを参照してください。
sidebar
Section titled “sidebar”型: SidebarEntry[]
ページのサイトナビゲーション用サイドバーのエントリー。
hasSidebar
Section titled “hasSidebar”型: boolean
ページにサイドバーを表示するかどうか。
pagination
Section titled “pagination”型: { prev?: Link; next?: Link }
ページネーションの設定が有効な場合にサイドバーに表示される、前のページと次のページへのリンク。
型: { minHeadingLevel: number; maxHeadingLevel: number; items: TocItem[] } | undefined
目次の設定が有効な場合、このページの目次。
headings
Section titled “headings”型: { depth: number; slug: string; text: string }[]
現在のページから抽出されたすべてのMarkdown見出しの配列。Starlightの設定オプションをもとに目次コンポーネントを作成したい場合は、tocを使用してください。
lastUpdated
Section titled “lastUpdated”型: Date | undefined
最終更新日の設定が有効な場合、このページが最後に更新された日時を表わすJavaScriptのDateオブジェクト。
editUrl
Section titled “editUrl”型: URL | undefined
ページの編集設定が有効な場合、このページを編集可能なアドレスのURLオブジェクト。
型: HeadConfig[]
現在のページの<head>に含めるすべてのタグの配列。<title>や<meta charset="utf-8">などの重要なタグが含まれます。
ユーティリティ
Section titled “ユーティリティ”defineRouteMiddleware()
Section titled “defineRouteMiddleware()”ルートミドルウェアモジュールに型を付けるには、defineRouteMiddleware()ユーティリティを使用します。
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
export const onRequest = defineRouteMiddleware((context) => { // ...});StarlightRouteData型
Section titled “StarlightRouteData型”Starlightのルートデータを扱うコードを書く場合は、StarlightRouteData型をインポートしてAstro.locals.starlightRouteの型定義に合わせることができます。
以下の例では、usePageTitleInTOC()関数がルートデータを更新し、目次の最初の項目のラベルとして現在のページのタイトルを使用することで、デフォルトの「概要」ラベルを置き換えます。StarlightRouteData型により、ルートデータの変更が正しいかどうかを確認できます。
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; }}この関数は次のようにルートミドルウェアから呼び出すことができます。
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';import { usePageTitleInTOC } from './route-utils';
export const onRequest = defineRouteMiddleware((context) => { usePageTitleInTOC(context.locals.starlightRoute);});