Данные маршрута
Объект данных маршрута 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
Заголовок раздела «starlightRoute»Объект starlightRoute имеет следующие свойства:
Тип: 'ltr' | 'rtl'
Направление текста страницы.
Тип: string
Тег языка BCP-47 для локали этой страницы. Например: en, zh-CN или pt-BR.
Тип: string | undefined
Базовый путь, по которому доступен язык. undefined для корневых локалей.
siteTitle
Заголовок раздела «siteTitle»Тип: string
Заголовок сайта для локали этой страницы.
siteTitleHref
Заголовок раздела «siteTitleHref»Тип: string
Значение для атрибута href заголовка сайта, ссылающегося на главную страницу, например, /.
Для многоязычных сайтов это будет включать текущую локаль. Например: /en/ или /zh-cn/.
Тип: string
Слаг для этой страницы.
isFallback
Заголовок раздела «isFallback»Тип: boolean | undefined
true, если эта страница не переведена на текущий язык и отображает контент по умолчанию из основной локали.
Используется только на многоязычных сайтах.
entryMeta
Заголовок раздела «entryMeta»Тип: { dir: 'ltr' | 'rtl'; lang: string }
Метаданные локали для контента страницы. Могут отличаться от значений локали верхнего уровня, если страница использует контент по умолчанию.
Запись коллекции контента Astro для текущей страницы.
Включает значения метаданных для текущей страницы в entry.data.
entry: { data: { title: string; description: string | undefined; // и т. д. }}Узнайте больше о структуре этого объекта в справочнике: CollectionEntry.
sidebar
Заголовок раздела «sidebar»Тип: Array<SidebarLink | SidebarGroup>
Элементы боковой панели навигации сайта для этой страницы. Каждая запись представляет собой либо ссылку боковой панели, либо группу боковой панели.
Тип SidebarLink
Заголовок раздела «Тип SidebarLink»Записи ссылок боковой панели представляют собой ссылку, отображаемую в боковой панели, и имеют следующие свойства:
Тип: 'link'
Тип, определяющий эту запись как ссылку боковой панели.
Тип: string
Текст ссылки.
Тип: string
URL, на который указывает ссылка.
isCurrent
Заголовок раздела «isCurrent»Тип: boolean
true, если ссылка ведёт на текущую страницу.
Тип: Record<string, string | number | boolean | undefined>
HTML-атрибуты, добавляемые к отображаемому элементу <a>.
Тип: { text: string; variant: 'note' | 'danger' | 'success' | 'caution' | 'tip' | 'default'; class?: string } | undefined
Настройка значка, отображаемого рядом с меткой ссылки (если есть).
Подробнее см. в справочнике по пропсам компонента <Badge>.
autogenerate
Заголовок раздела «autogenerate»Тип: { directory: string } | undefined
Для ссылок, созданных из автогенерируемой записи боковой панели, directory соответствует настроенному значению autogenerate.directory.
Если конфигурация sidebar не задана, Starlight генерирует записи для всех страниц документации и использует пустую строку ('') в качестве значения directory.
Тип SidebarGroup
Заголовок раздела «Тип SidebarGroup»Записи групп боковой панели представляют собой группу ссылок, отображаемую в боковой панели, и имеют следующие свойства:
Тип: 'group'
Тип, определяющий эту запись как группу боковой панели.
Тип: string
Текст группы.
entries
Заголовок раздела «entries»Тип: Array<SidebarLink | SidebarGroup>
Вложенные записи боковой панели внутри этой группы (могут быть ссылками или группами).
collapsed
Заголовок раздела «collapsed»Тип: boolean
Сворачивается ли группа по умолчанию.
Тип: { text: string; variant: 'note' | 'danger' | 'success' | 'caution' | 'tip' | 'default'; class?: string } | undefined
Настройка значка, отображаемого рядом с меткой группы (если есть).
Подробнее см. в справочнике по пропсам компонента <Badge>.
autogenerate
Заголовок раздела «autogenerate»Тип: { directory: string } | undefined
Для групп, созданных из автогенерируемой записи боковой панели, directory соответствует настроенному значению autogenerate.directory.
Если конфигурация sidebar не задана, Starlight генерирует записи для всех страниц документации и использует пустую строку ('') в качестве значения directory.
hasSidebar
Заголовок раздела «hasSidebar»Тип: boolean
Отображать ли боковую панель на этой странице.
pagination
Заголовок раздела «pagination»Тип: { prev?: Link; next?: Link }
Ссылки на предыдущую и следующую страницы в боковой панели, если она включена.
Тип: { minHeadingLevel: number; maxHeadingLevel: number; items: TocItem[] } | undefined
Содержание для этой страницы, если оно включено.
headings
Заголовок раздела «headings»Тип: { depth: number; slug: string; text: string }[]
Массив всех заголовков Markdown, извлечённых с текущей страницы.
Используйте toc, если хотите создать компонент содержания, который будет учитывать параметры конфигурации Starlight.
lastUpdated
Заголовок раздела «lastUpdated»Тип: Date | undefined
Объект JavaScript Date, представляющий дату последнего обновления этой страницы, если это включено.
editUrl
Заголовок раздела «editUrl»Тип: URL | undefined
Объект URL для адреса, по которому можно отредактировать эту страницу, если это включено.
Тип: HeadConfig[]
Массив всех тегов, которые следует включить в <head> текущей страницы.
Включает важные теги, такие как <title> и <meta charset="utf-8">.
Утилиты
Заголовок раздела «Утилиты»defineRouteMiddleware()
Заголовок раздела «defineRouteMiddleware()»Используйте утилиту defineRouteMiddleware(), чтобы типизировать мидлвар-модуль для маршрута:
import { defineRouteMiddleware } from '@astrojs/starlight/route-data';
export const onRequest = defineRouteMiddleware((context) => { // ...});Тип StarlightRouteData
Заголовок раздела «Тип 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);});