Dodaj kanał RSS
Astro obsługuje szybkie, automatyczne generowanie kanałów RSS dla blogów i innych witryn z treścią. Kanały RSS zapewniają łatwy sposób dla użytkowników na subskrybowanie Twoich treści.
Konfiguracja @astrojs/rss
Dział zatytułowany Konfiguracja @astrojs/rssPakiet @astrojs/rss
zapewnia narzędzia pomocnicze do generowania kanałów RSS za pomocą endpointów API. Odblokowuje to zarówno statyczne budowanie jak i generowanie na żądanie przy użyciu adaptera SSR.
-
Zainstaluj
@astrojs/rss
używając preferowanego menedżera pakietów:Upewnij się, że skonfigurowałeś
site
wastro.config
Twojego projektu. Zostanie to użyte do generowania linków do Twoich artykułów RSS. -
Utwórz plik w
src/pages/
z wybraną nazwą i rozszerzeniem.xml.js
, który będzie używany jako wyjściowy URL dla Twojego kanału. Niektóre powszechne nazwy URL kanałów RSS tofeed.xml
lubrss.xml
.Poniższy przykład pliku
src/pages/rss.xml.js
utworzy kanał RSS pod adresemsite/rss.xml
. -
Zaimportuj funkcję pomocniczą
rss()
z pakietu@astrojs/rss
do swojego pliku.xml.js
i wyeksportuj funkcję, która ją zwróci przy użyciu następujących parametrów:
Generowanie items
Dział zatytułowany Generowanie itemsPole items
akceptuje listę obiektów kanału RSS, które mogą być generowane z wpisów kolekcji zawartości za pomocą getCollection()
lub z plików stron za pomocą pagesGlobToRssItems()
.
Standardowy format kanału RSS zawiera następujące wartości dla każdego opublikowanego elementu:
title
: Tytuł wpisu. Opcjonalny tylko jeśli ustawionodescription
. W przeciwnym razie wymaganydescription
: Krótki fragment lub opis wpisu. Opcjonalny tylko jeśli ustawionotitle
. W przeciwnym razie wymagany.link
: URL do oryginalnego źródła wpisu. (opcjonalne)pubDate
: Data publikacji wpisu. (opcjonalne)content
: Pełna treść Twojego posta. (opcjonalne)customData
: Pole do uwzględnienia dowolnych dodatkowych danych, takich jak inne właściwości frontmatter z Twoich postów na blogu.
Używanie kolekcji zawartości
Dział zatytułowany Używanie kolekcji zawartościAby utworzyć kanał RSS stron zarządzanych w kolekcji zawartości, użyj funkcji getCollection()
, aby pobrać dane wymagane dla Twojej tablicy items
. Będziesz musiał określić wartości dla każdej żądanej właściwości (np. title
, description
) z zwróconych danych.
Opcjonalnie: zastąp istniejący schemat kolekcji bloga, aby wymusić oczekiwane właściwości RSS.
Aby upewnić się, że każdy wpis na blogu generuje prawidłowy element kanału RSS, możesz opcjonalnie zaimportować i zastosować rssSchema
zamiast definiować każdą indywidualną właściwość swojego schematu.
Używanie importów glob
Dział zatytułowany Używanie importów glob
Dodane w:
@astrojs/rss@2.1.0
Aby utworzyć kanał RSS z dokumentów w src/pages/
, użyj pomocnika pagesGlobToRssItems()
. Akceptuje on wynik import.meta.glob
i zwraca tablicę prawidłowych elementów kanału RSS (zobacz więcej o pisaniu wzorców glob w celu określenia, które strony uwzględnić).
Ta funkcja zakłada, ale nie weryfikuje, że wszystkie niezbędne właściwości kanału są obecne w każdym dokumencie frontmatter. Jeśli napotkasz błędy, zweryfikuj frontmatter każdej strony ręcznie.
W wersjach @astrojs/rss
przed v2.1.0, przekaż wynik glob bezpośrednio do items
bez wrappera pagesGlobToRssItems()
:
Ta metoda jest przestarzała we wszystkich wersjach Astro od v2.1.0 i nie może być używana w nowoczesnych projektach.
Uwzględnianie pełnej treści posta
Dział zatytułowany Uwzględnianie pełnej treści posta
Dodane w:
astro@1.6.14
Klucz content
zawiera pełną treść posta jako HTML. Pozwala to na udostępnienie całej treści posta czytnikom kanałów RSS.
Pakiet taki jak sanitize-html
upewni się, że Twoja treść jest odpowiednio oczyszczona, escapowana i zakodowana. W procesie takim pakiet może również usunąć pewne nieszkodliwe elementy i atrybuty, więc upewnij się, że zweryfikowałeś dane wyjściowe i skonfigurowałeś pakiet zgodnie ze swoimi potrzebami.
Podczas używania kolekcji zawartości, renderuj body
posta za pomocą standardowego parsera Markdown, takiego jak markdown-it
i zsanityzuj wynik, uwzględniając wszelkie dodatkowe tagi (np. <img>
), które są potrzebne do renderowania Twojej treści:
Podczas używania importów glob z Markdown, możesz użyć pomocnika compiledContent()
, aby pobrać renderowany HTML w celu sanityzacji. Uwaga: ta funkcja nie jest obsługiwana dla plików MDX.
Usuwanie końcowych ukośników
Dział zatytułowany Usuwanie końcowych ukośnikówKanał RSS Astro domyślnie generuje linki z końcowym ukośnikiem, niezależnie od wartości, którą skonfigurowałeś dla trailingSlash
. Oznacza to, że Twoje linki RSS mogą nie dokładnie odpowiadać URL-om Twoich postów.
Jeśli ustawiłeś trailingSlash: "never"
w swoim astro.config.mjs
, ustaw trailingSlash: false
w pomocniku rss()
, aby Twój kanał pasował do konfiguracji projektu.
Dodawanie arkusza stylów
Dział zatytułowany Dodawanie arkusza stylówOstyluj swój kanał RSS, aby zapewnić przyjemniejsze doświadczenie użytkownikowi podczas przeglądania pliku w przeglądarce.
Użyj opcji stylesheet
funkcji rss
, aby określić absolutną ścieżkę do swojego arkusza stylów.
Jeśli wolisz nie tworzyć własnego arkusza stylów, możesz użyć gotowego arkusza, takiego jak domyślny arkusz stylów Pretty Feed v3. Pobierz arkusz stylów z GitHuba i zapisz go w katalogu public/
swojego projektu.
Włączanie automatycznego wykrywania kanału RSS
Dział zatytułowany Włączanie automatycznego wykrywania kanału RSSAutomatyczne wykrywanie RSS pozwala przeglądarkom i innemu oprogramowaniu automatycznie znaleźć kanał RSS witryny z głównego adresu URL.
Aby włączyć, dodaj znacznik <link>
z następującymi atrybutami do elementu head
swojej witryny:
Dzięki temu tagowi czytelnicy Twojego bloga mogą wprowadzić podstawowy URL Twojej witryny do swojego czytnika RSS, aby subskrybować Twoje posty bez potrzeby znajomości konkretnego URL Twojego kanału RSS.
Kolejne kroki
Dział zatytułowany Kolejne krokiPo odwiedzeniu swojego kanału w przeglądarce pod adresem twoja-domena.com/rss.xml
i potwierdzeniu, że możesz zobaczyć dane dla każdego ze swoich postów, możesz teraz promować swój kanał na swojej stronie internetowej. Dodanie standardowej ikony RSS do swojej witryny pozwala Twoim czytelnikom wiedzieć, że mogą subskrybować Twoje posty w swoim czytniku kanałów.