ルートデータ
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 の docsLoader
を使用して新しいコンテンツレイヤー API に移行し、代わりに id
プロパティを使用してください。
型: string
legacy.collections
フラグを使用している場合は、コンテンツファイル名に基づくこのページの一意の ID、またはスラッグ。
isFallback
Section titled “isFallback”型: boolean | undefined
現在の言語で未翻訳のページが既定ロケールのフォールバックコンテンツを使用している場合に true
。
多言語サイトでのみ使用されます。
entryMeta
Section titled “entryMeta”型: { dir: 'ltr' | 'rtl'; lang: string }
ページコンテンツのロケールメタデータ。
ページがフォールバックコンテンツを使用している場合、トップレベルのロケール値とは異なることがあります。
現在のページに対応する Astro コンテンツコレクションのエントリ。
現在のページの frontmatter 値は entry.data
に含まれます。
entry: { data: { title: string; description: string | undefined; // その他の値 }}
このオブジェクトの構造については、Astro の Collection Entry Type リファレンスを参照してください。
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()
関数がルートデータを更新し、目次内の最初の項目ラベルをデフォルトの「Overview」から現在のページタイトルに置き換えます。
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);});