コンテンツにスキップ
Filters

    ルートデータ

    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言語タグ。たとえばenzh-CNpt-BRなど。

    型: string | undefined

    言語が配信されるベースパス。ルートロケールスラグの場合はundefinedとなります。

    型: string

    このページのロケールのサイトタイトル。

    型: string

    サイトタイトルのhref属性の値。たとえば/など、ホームページへのリンクとなります。多言語サイトの場合、たとえば/en//zh-cn/など、現在のロケールが含まれます。

    型: string

    このページのスラグ。

    型: boolean | undefined

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

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

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

    現在のページのAstroコンテンツコレクションのエントリー。entry.dataには、現在のページのフロントマターの値が含まれます。

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

    このオブジェクトの構造については、Astroのコレクションエントリー型リファレンスを参照してください。

    型: 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()関数がルートデータを更新し、目次の最初の項目のラベルとして現在のページのタイトルを使用することで、デフォルトの「概要」ラベルを置き換えます。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);
    });