Voici une explication détaillée des concepts clés de Sanity et comment l'utiliser avec des frameworks front-end comme Next.js et React.js :
Content Studio est l'endroit où vous gérez visuellement votre contenu. Il est personnalisable et construit avec React, ce qui le rend flexible pour créer différentes structures de données pour différents types de contenu.
npm install -g @sanity/cli
sanity init
Suivez les invites pour sélectionner un modèle de projet et choisir les paramètres (nom du projet, ensemble de données, etc.).
sanity start
Cela ouvrira Content Studio à l'adresse http://localhost:3333. Vous pouvez désormais gérer votre contenu ici.
Les schémas dans Sanity définissent la structure de votre contenu, de la même manière que la définition de modèles dans une base de données. Vous définirez des schémas dans le dossier schémas de votre projet Sanity.
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
Ce schéma crée une structure pour les articles de blog, comprenant des champs pour le titre, le corps, la référence de l'auteur et la date de publication.
Les documents sont des entrées de contenu dans Sanity. Une fois vos schémas définis, vous pouvez créer des documents basés sur ces schémas dans Content Studio.
Portable Text est l'éditeur de texte riche flexible de Sanity, qui vous permet de définir la façon dont différents éléments de texte (comme les images, les titres ou les composants personnalisés) apparaissent dans votre contenu.
export default { name: 'body', title: 'Body', type: 'array', of: [ { type: 'block' }, // Basic block elements like paragraphs { type: 'image' }, // Custom image blocks ], };
Le client Sanity est utilisé dans votre framework front-end (comme React ou Next.js) pour récupérer du contenu depuis Sanity. Il utilise GROQ, un langage de requête conçu spécifiquement pour Sanity.
Dans votre projet Next.js ou React.js, installez le client Sanity :
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 });
Pour récupérer des articles de blog, utilisez GROQ avec le client :
import { client } from './sanity'; const query = `*[_type == "blog"]{title, body, publishedAt}`; const blogs = await client.fetch(query);
Vous avez maintenant récupéré tous les articles de blog et pouvez les afficher dans vos composants Next.js ou React.
Sanity offre de puissantes capacités de gestion d'images, vous permettant de recadrer, redimensionner et optimiser facilement les images.
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> );
Cet exemple montre comment générer une URL d'image optimisée à partir de Sanity pour le rendu dans votre composant.
Vous pouvez créer des relations entre les documents dans Sanity en utilisant le type référence. Ceci est utile pour relier des données telles que les auteurs de blogs et leurs articles.
{ name: 'author', title: 'Author', type: 'reference', to: [{ type: 'author' }] }
Dans Content Studio, vous pouvez ensuite sélectionner un document d'auteur comme référence lors de la création d'un article de blog.
Sanity offre une collaboration en temps réel, où plusieurs utilisateurs peuvent travailler simultanément sur le même document. Les modifications apparaissent instantanément pour tous les utilisateurs travaillant sur le contenu.
Cette fonctionnalité est automatiquement intégrée à Sanity Studio et vous n'avez pas besoin d'effectuer de configuration spéciale pour l'activer.
Pour intégrer Sanity à un projet Next.js ou React.js, suivez ces étapes :
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.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!