Payload
payload() सोर्स के माध्यम से किसी Payload कलेक्शन को उसके REST API से पढ़ें और Lexical रिच टेक्स्ट बॉडी को Markdown में बदलें। इसके लिए कुछ भी इंस्टॉल करने की आवश्यकता नहीं है।
बिल्ट-इन payload() एडेप्टर Payload REST API (/api/<collection>) के माध्यम से कोई कलेक्शन पढ़ता है और प्रत्येक दस्तावेज़ की Lexical बॉडी को Markdown में बदलता है। इसमें पैराग्राफ़, हेडिंग, बुलेट, क्रमांकित और चेक सूचियाँ, उद्धरण, लिंक, अपलोड और क्षैतिज रेखाएँ शामिल हैं। यदि बॉडी किसी टेक्स्ट फ़ील्ड में रखी गई है, तो वह Markdown के रूप में ज्यों-की-त्यों आगे भेज दी जाती है। अपवाद केवल वे लिंक हैं जो वेब, मेल, फ़ोन या सापेक्ष पते की ओर नहीं ले जाते। ऐसे लिंक का केवल लेबल रखा जाता है। कुछ भी इंस्टॉल करने की आवश्यकता नहीं है।
import { defineConfig } from "blume";
import { filesystem, payload } from "blume/sources";
export default defineConfig({
content: {
sources: [
filesystem({ root: "docs" }),
payload({
prefix: "handbook",
url: "https://cms.example.com",
collection: "docs",
// Field paths default to title / description / slug / content /
// updatedAt; order (no default) sets the sidebar order
fields: { body: "richText" },
// Extra query parameters: where[...], sort
params: { sort: "title" },
}),
],
},
});
API कुंजी PAYLOAD_API_KEY एनवायरनमेंट वेरिएबल से ली जाती है और users API-Key <key> के रूप में भेजी जाती है। यदि कुंजी किसी दूसरे auth-सक्षम कलेक्शन की है, तो authCollection सेट करें। केवल प्रकाशित दस्तावेज़ इम्पोर्ट किए जाते हैं। --preview ड्राफ़्ट भी माँगता है और उन्हें draft: true के साथ स्टेज करता है। दस्तावेज़ depth: 1 के साथ फ़ेच किए जाते हैं, ताकि अपलोड के साथ उनके URL भी आएँ। सापेक्ष अपलोड पथ (/media/x.png) url के आधार पर रिज़ॉल्व होता है। अपलोड डाउनलोड नहीं किए जाते। उन्हें उसी URL से संदर्भित किया जाता है, क्योंकि Notion के URL की तरह यह URL समाप्त नहीं होता। इसलिए पाठकों के ब्राउज़र उन्हें आपके Payload सर्वर या उसके स्टोरेज से लोड करते हैं। यदि आप चाहते हैं कि Blume बिल्ड के समय उन्हें डाउनलोड और ऑप्टिमाइज़ करे, तो image.domains में होस्ट को अधिकृत करें। यदि आप payloadSource को सीधे बनाकर custom() को पास करते हैं, तो इंजन के serializers विकल्प से block या inlineBlock नोड को किसी Blume कॉम्पोनेंट से मैप किया जा सकता है। यह मैपिंग blockType के आधार पर होती है। serializers सेट करने पर सोर्स के पेज MDX के रूप में लिखे जाते हैं, ताकि लौटाए गए कॉम्पोनेंट रेंडर हो सकें। Markdown टेक्स्ट फ़ील्ड में रखी गई बॉडी Markdown ही रहती है। जिस नोड का कोई Markdown समकक्ष नहीं है, या जिस ब्लॉक के लिए कोई सीरियलाइज़र नहीं है, उसे छोड़ दिया जाता है और उसकी जगह एक टिप्पणी रखी जाती है। ऐसे में सोर्स BLUME_SOURCE_UNSUPPORTED_NODE चेतावनी देता है, जिसमें उस नोड और पेज का नाम होता है।
Payload CMS के साथ दस्तावेज़ीकरण वेबसाइट बनाएँ में यह पूरी प्रक्रिया शुरू से अंत तक बताई गई है। इसमें एक कलेक्शन को खोजने योग्य दस्तावेज़ साइट के रूप में प्रकाशित किया जाता है। साथ ही ड्राफ़्ट प्रीव्यू मिलते हैं, और जब भी कोई संपादक कुछ प्रकाशित करता है, तो साइट फिर से बिल्ड होती है।