Перейти к содержимому

Добавление RSS-ленты

Astro поддерживает автоматическую генерацию RSS-лент для блогов и других сайтов с часто обновляемым контентом.

Пакет @astrojs/rss предоставляет инструменты для создания лент через API эндпойнты. Это работает как при статической сборке, так и при использовании SSR-адаптеров.

  1. Установите пакет @astrojs/rss:

    shell npm install @astrojs/rss
  2. Создайте файл в src/pages/ с расширением .xml.js (например, rss.xml.js).

  3. Импортируйте хелпер rss и экспортируйте функцию GET:

    src/pages/rss.xml.js
    import rss from '@astrojs/rss';
    export function GET(context) {
    return rss({
    title: 'Блог Buzz',
    description: 'Справочник астронавта по звездам',
    site: context.site,
    items: [], // см. ниже, как наполнить список
    customData: `<language>ru-ru</language>`,
    });
    }

Для создания ленты из страниц, управляемых через коллекции контента, используйте функцию getCollection():

src/pages/rss.xml.js
import rss from '@astrojs/rss';
import { getCollection } from 'astro:content';
export async function GET(context) {
const blog = await getCollection('blog');
return rss({
title: 'Блог Buzz',
description: 'Справочник астронавта по звездам',
site: context.site,
items: blog.map((post) => ({
title: post.data.title,
pubDate: post.data.pubDate,
description: post.data.description,
link: `/blog/${post.id}/`,
})),
});
}

Чтобы браузеры и читалки могли автоматически найти вашу ленту, добавьте тег <link> в секцию head вашего основного макета:

<link
rel="alternate"
type="application/rss+xml"
title="Название вашего сайта"
href={new URL("rss.xml", Astro.site)}
/>