2025-09-07
2025-09-07
JSON srauto generavimas naudojantis astro karkasu
Yo! Sveikas, skaitytojau. Žadėta - ištęsėta. Šiame tinklaraščio įraše pateikiu JSON srauto receptą astro tinklaraščiams.
Trumpa instrukcija
Susidiek vieną srauto generavimui reikiamą programinį paketą. (Šis naudojamas ne šiaip sau, o todėl, jog astro pagal nutylėjimą negeba JSON sraute reprezentuoti HTML kodo, kuris turėtų būti grąžinamas kiekviename tinklaraščio įrašo objekte, kaip content reikšmė)
npm install --save marked
Susikurk naują failą “feed.json.ts” direktorijoje “src/pages”.
Panaudok programinį kodą pateiktą šiek tiek žemiau, iškopijuok ir įklijuok.
import { getCollection } from "astro:content";
import { marked } from "marked"; // install with: npm i marked
export async function GET() {
const posts = await getCollection("blog");
const items = posts.map((post) => {
// Convert raw Markdown body to HTML
const html =
marked.parse(post.body ?? "") +
' <div id="copyright-artefaktas"><p xmlns:cc="http://creativecommons.org/ns#" xmlns:dct="http://purl.org/dc/terms/"><span property="dct:title">Artefaktas.eu</span> is licensed under <a href="http://creativecommons.org/licenses/by-nc-nd/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display:inline-block;">CC BY-NC-ND 4.0</a></p> </div>';
return {
id: post.id,
url: `https://artefaktas.eu/blog/${post.id}/`,
title: post.data.title,
content_html: html,
date_published: post.data.pubDate
? new Date(post.data.pubDate).toISOString()
: undefined,
summary: post.data.description,
};
});
const feed = {
version: "https://jsonfeed.org/version/1.1",
title: "Artefaktas.eu",
home_page_url: "https://artefaktas.eu/",
feed_url: "https://artefaktas.eu/feed.json",
description: "Latest posts from artefaktas.eu.",
items,
};
return new Response(JSON.stringify(feed, null, 2), {
headers: { "Content-Type": "application/feed+json" },
});
}
Pakeisk kiekvieną rastą artefaktas.eu į savo svetainės adresą ir panaudok build komandą perkurti puslapiams (esant poreikiui bei norint pratęstuoti galima nurodyti http://localhost/feed.json ar panašiai).
| # | Žymos |
|---|---|
| #post #artefaktas_eu #personal #opinion #build #javascript #json #feed |
Asmeninė nuomonė.
Linktree link: https://linktr.ee/artefaktas
Tinklaraštį galima prenumeruoti net keletu skirtingų būdų:
- Naudojant RSS sklaidos kanalo nuorodą: https://artefaktas.eu/rss.xml
- Naudojantis follow.it forma
Artefaktas.eu is licensed under CC BY-NC-ND 4.0