ホームページ >ウェブフロントエンド >jsチュートリアル >Sanity CMS - そのすべて
Hier finden Sie eine ausführliche Erklärung der wichtigsten Sanity-Konzepte und deren Verwendung mit Front-End-Frameworks wie Next.js und React.js :
Content Studio ist der Ort, an dem Sie Ihre Inhalte visuell verwalten. Es ist anpassbar und mit React erstellt, wodurch es flexibel für die Erstellung verschiedener Datenstrukturen für verschiedene Arten von Inhalten ist.
npm install -g @sanity/cli
sanity init
Folgen Sie den Anweisungen, um eine Projektvorlage auszuwählen und Einstellungen (Projektname, Datensatz usw.) auszuwählen.
sanity start
Dadurch wird das Content Studio unter http://localhost:3333 geöffnet. Hier können Sie nun Ihre Inhalte verwalten.
Schemata in Sanity definieren die Struktur Ihrer Inhalte, ähnlich wie die Definition von Modellen in einer Datenbank. Sie definieren Schemata im Schemaordner Ihres Sanity-Projekts.
export default { name: 'blog', title: "'Blog Post'," type: 'document', fields: [ { name: 'title', title: "'Title'," type: 'string', }, { name: 'body', title: "'Body'," type: 'portableText', // For rich text fields }, { name: 'author', title: "'Author'," type: 'reference', to: [{ type: 'author' }], // Reference to another document type }, { name: 'publishedAt', title: "'Published At'," type: 'datetime', }, ], };
import blog from './blog'; export default createSchema({ name: 'default', types: schemaTypes.concat([blog]), });
sanity start
Dieses Schema erstellt eine Struktur für Blogbeiträge, einschließlich Feldern für Titel, Text, Autorenreferenz und Veröffentlichungsdatum.
Dokumente sind Inhaltseinträge in Sanity. Sobald Ihre Schemata definiert sind, können Sie im Content Studio Dokumente basierend auf diesen Schemata erstellen.
Portable Text ist der flexible Rich-Text-Editor von Sanity, mit dem Sie definieren können, wie verschiedene Textelemente (wie Bilder, Überschriften oder benutzerdefinierte Komponenten) in Ihren Inhalten angezeigt werden.
export default { name: 'body', title: 'Body', type: 'array', of: [ { type: 'block' }, // Basic block elements like paragraphs { type: 'image' }, // Custom image blocks ], };
Der Sanity Client wird in Ihrem Front-End-Framework (wie React oder Next.js) verwendet, um Inhalte von Sanity abzurufen. Es verwendet GROQ, eine Abfragesprache, die speziell für Sanity entwickelt wurde.
In Ihrem Next.js- oder React.js-Projekt installieren Sie den Sanity-Client:
npm install @sanity/client @sanity/image-url
import sanityClient from '@sanity/client'; export const client = sanityClient({ projectId: 'yourProjectId', // found in sanity.json or sanity studio dataset: 'production', apiVersion: '2023-01-01', // use a specific API version useCdn: true, // 'false' if you want the latest data });
Um Blogbeiträge abzurufen, verwenden Sie GROQ mit dem Client:
import { client } from './sanity'; const query = `*[_type == "blog"]{title, body, publishedAt}`; const blogs = await client.fetch(query);
Sie haben jetzt alle Blogbeiträge abgerufen und können sie in Ihren Next.js- oder React-Komponenten rendern.
Sanity bietet leistungsstarke Bildbearbeitungsfunktionen, mit denen Sie Bilder problemlos zuschneiden, in der Größe ändern und optimieren können.
npm install @sanity/image-url
import imageUrlBuilder from '@sanity/image-url'; import { client } from './sanity'; const builder = imageUrlBuilder(client); export function urlFor(source) { return builder.image(source); }
import { urlFor } from './sanity'; const Blog = ({ blog }) => ( <div> <h1>{blog.title}</h1> <img src={urlFor(blog.image).width(800).url()} alt="Blog Image" /> </div> );
Dieses Beispiel zeigt, wie Sie eine optimierte Bild-URL von Sanity zum Rendern in Ihrer Komponente generieren.
Sie können Beziehungen zwischen Dokumenten in Sanity erstellen, indem Sie den Referenztyp verwenden. Dies ist nützlich, um Daten wie Blog-Autoren und ihre Beiträge zu verknüpfen.
{ name: 'author', title: 'Author', type: 'reference', to: [{ type: 'author' }] }
Im Content Studio können Sie dann beim Erstellen eines Blogbeitrags ein Autorendokument als Referenz auswählen.
Sanity bietet Echtzeit-Zusammenarbeit, bei der mehrere Benutzer gleichzeitig an demselben Dokument arbeiten können. Änderungen werden sofort für alle Benutzer angezeigt, die am Inhalt arbeiten.
Diese Funktion ist automatisch in Sanity Studio integriert und Sie müssen keine spezielle Einrichtung vornehmen, um sie zu aktivieren.
Um Sanity in ein Next.js- oder React.js-Projekt zu integrieren, befolgen Sie diese Schritte:
import { client } from '../sanity'; export async function getStaticProps() { const blogs = await client.fetch(`*[_type == "blog"]`); return { props: { blogs }, }; } const BlogList = ({ blogs }) => ( <div> {blogs.map(blog => ( <div key={blog._id}> <h2>{blog.title}</h2> <p>{blog.body[0]?.children[0]?.text}</p> </div> ))} </div> ); export default BlogList;
import { client } from './sanity'; import { useState, useEffect } from 'react'; const BlogList = () => { const [blogs, setBlogs] = useState([]); useEffect(() => { const fetchBlogs = async () => { const data = await client.fetch(`*[_type == "blog"]`); setBlogs(data); }; fetchBlogs(); }, []); return ( <div> {blogs.map(blog => ( <div key={blog._id}> <h2>{blog.title}</h2> <p>{blog.body[0]?.children[0]?.text}</p> </div> ))} </div> ); }; export default BlogList;
This setup allows you to efficiently manage, query, and display content in front-end frameworks like Next.js and React.js.
以上がSanity CMS - そのすべての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。