Cómo localizar y personalizar contenido con Sanity.io y Next.js

Rate this content
Bookmark

Estructurar tu contenido con Sanity.io significa que puedes consultar el contenido basado en señales de tus visitantes, como su ubicación. La personalización es un problema complicado con sitios estáticos y el jamstack, esta demostración te mostrará cómo se puede hacer con Sanity.io, Next.js y Vercel.

This talk has been presented at React Advanced 2021, check out the latest edition of this React Conference.

FAQ

Sanity.io es una plataforma de contenido para contenido estructurado que reemplaza la necesidad de un CMS tradicional. Permite estructurar todo el contenido de su negocio y consultar donde quiera.

Sanity.io permite crear banners personalizados que dependen del país del visitante, utilizando la combinación de Next.js y Vercel para alojamiento y funciones sin servidor, junto con consultas Grok para obtener el contenido relevante basado en la ubicación.

Sanity.io utiliza Next.js y React para la creación y alojamiento de aplicaciones, además de su propio estudio configurable y consultas Grok para la gestión y entrega de contenido estructurado.

Grok es el lenguaje de consulta desarrollado por Sanity para realizar consultas expresivas y potentes sobre datos estructurados. Permite buscar y filtrar contenido dinámicamente basado en criterios específicos.

Sanity.io maneja la personalización de contenido en páginas estáticas mediante el uso de funciones sin servidor en plataformas como Next.js y Vercel, que consultan y entregan contenido dinámico basado en la ubicación del usuario u otros criterios.

Sí, Sanity.io ofrece un plan de inicio gratuito que permite a los nuevos usuarios experimentar con la plataforma y descubrir cómo pueden gestionar y estructurar su contenido.

Simeon Griggs
Simeon Griggs
8 min
25 Oct, 2021

Comments

Sign in or register to post your comment.
Video Summary and Transcription
Sanity.io proporciona una plataforma de contenido para contenido estructurado que reemplaza a los CMS tradicionales. Su solución permite a las empresas estructurar y consultar contenido en cualquier lugar utilizando el estudio de Sanity y la aplicación de React de código abierto. La charla se centra en resolver el desafío de enviar datos personalizados a los usuarios en un entorno de sitio web estático utilizando Next.js Vercel para el alojamiento y Sanity para la consulta y entrega de contenido. El estudio de Sanity permite modelar páginas, artículos y banners, mostrando banners a los visitantes según su país. La solución implica el uso de consultas Grok para obtener el banner correcto según la información del país, demostrando la personalización basada en la localización y la consulta de contenido dinámico.

1. Introducción a Sanity y el Problema

Short description:

Hola, soy Simeon, un ingeniero de soluciones en sanity.io. Proporcionamos una plataforma de contenido para contenido estructurado que reemplaza a los CMS tradicionales. Nuestra solución le permite estructurar y consultar el contenido de su negocio en cualquier lugar, utilizando el estudio de sanity y la aplicación de código abierto React. Trabajamos con grandes empresas para aprovechar lo mejor del conjunto de herramientas web moderno. Hoy, resolveremos el desafío de enviar datos personalizados a los usuarios en un entorno de sitio web estático. Nuestra solución involucra Next.js Vercel para el alojamiento y Sanity para la consulta y entrega de contenido. Vamos a explorar la solución que hemos construido.

Hola, soy Simeon, un ingeniero de soluciones aquí en sanity.io. Sanity es una plataforma de contenido para contenido estructurado y reemplaza la necesidad de un CMS tradicional para su sitio web y en su lugar le permite estructurar todo el contenido de su negocio y consultar donde quiera. Puede utilizar el estudio de sanity y la aplicación de código abierto React, que puede alojar donde quiera o implementar en nuestra infraestructura y configurar la mejor experiencia de edición para su equipo que tenga sentido para su flujo de trabajo y sus necesidades.

Trabajamos con muchas empresas grandes que desean aprovechar lo mejor de un conjunto de herramientas web moderno. Ahora, el problema que resolveremos hoy es que antes de que Jamstack se apoderara del mundo entero, solíamos servir sitios web desde servidores y esos servidores contenían mucha información sobre sus visitantes a medida que llegaban a cada página. Pero ahora, que construimos estáticamente muchas páginas de antemano y las servimos en CDNs distribuidas globalmente, esos archivos estáticos son exactamente iguales, entonces, ¿cómo envía un fragmento personalizado de datos a un usuario basado en alguna información que tenemos? Bueno, hoy tenemos una solución que creemos que es bastante ordenada. Involucra Next.js Vercel para el alojamiento y Sanity, por supuesto, para la consulta y entrega de contenido, pero esta es una idea que podría funcionar en muchas plataformas diferentes y hosts de funciones sin servidor. Así que echemos un vistazo a la solución tal como la hemos construido hoy.

2. Sanity Studio y Componente de Banner

Short description:

El estudio de Sanity te permite modelar páginas, artículos y banners. Los banners se muestran a los visitantes según su país. El componente de banner obtiene la URL del banner utilizando una ruta de API. Configura el estado y realiza un seguimiento de la fecha en que se ve el banner. La ruta de API verifica la información del país, permitiendo la anulación manual o la verificación de encabezados e información de IP.

Aquí tenemos el estudio de Sanity de un falso minorista de dulces en línea. Ahora, tu estudio puede verse algo diferente al nuestro, pero este es el que hemos modelado con páginas, artículos, pero lo más importante, echemos un vistazo a los banners.

Estos son los banners que vamos a mostrar a los visitantes a medida que llegan a la página, y dependerá del país en el que se encuentren. Estoy en el Reino Unido, así que quiero asegurarme de que vean este contenido aquí. En primer lugar, tenemos un menú desplegable aquí, que se rellena con una lista de países que provienen de un paquete npm, y este es el beneficio de contenido estructurado en archivos JavaScript, es que te permite crear un esquema casi infinitamente configurable.

Luego tenemos un campo de texto aquí para el título, un campo de texto para el contenido y un campo de imagen donde hemos incluido una encantadora imagen del Reino Unido de una fuente de activos de Unsplash. Así que ese es el banner que queremos mostrar a los visitantes, y veamos cómo se verá eso. Ya he visitado esta página antes, así que no me envían ese banner, pero si entro en una nueva ventana de incógnito, aquí se me muestra ese banner porque aquí es donde estoy. Entonces, ¿cómo funciona esto? Vamos a ver un poco de código.

Vamos a echar un vistazo rápido a esto. Los conceptos aquí son bastante sencillos, y tal vez podamos hacer que este código también esté disponible. Pero aquí está el componente de banner que estamos viendo. Entonces, puedes ver en la parte superior, la función get banner URL aquí va a enviar una solicitud a la ruta de la API. Las rutas de API son una forma de ejecutar lógica en el lado del servidor en un sitio web de Next.js. Pero nuevamente, la mayoría de las tecnologías JAMstack tienen conceptos similares para ejecutar funciones sin servidor para modificar páginas. Y he agregado un respaldo aquí para que durante el desarrollo, simplemente pueda establecer el país en una cadena de consulta, o de lo contrario, si estoy en producción, ir y llamar a esa API de la ruta de obtener banner directamente.

Ahora, aquí el componente de banner va a configurar un estado y también va a realizar un seguimiento utilizando este hook de estado pegajoso, que lo único que hace es asegurarse de registrar alguna información en el almacenamiento local. Y vamos a almacenar la fecha en que vi este banner. Y sería posible extender este componente para decir, si no he visto este banner durante, digamos, 24 horas, podría mostrarse nuevamente. Entonces, lo que vamos a hacer aquí cuando se monta el componente es primero obtener esta URL del banner. Y si el estado no es correcto, vamos a establecer que se ha visto el banner o si está vacío por alguna razón, no queremos hacer eso. Pero si la información del banner se devuelve correctamente, entonces queremos establecer eso en el componente y luego establecer que se ha visto el banner. Y si no tenemos ningún data porque ya hemos visto esto antes o el fetch falló y no se devolvió ningún data, entonces este componente no hace nada. Sin embargo, si obtenemos data del banner, entonces tenemos un poco de animación y estilo para cargar ese componente en la vista con una bonita animación y estilo. Así que echemos un vistazo a nuestra ruta de API. Entonces, cuando llega la solicitud a esta ruta de API, primero se va a verificar qué información del país tenemos. Primero, se va a verificar, ¿hemos anulado esto manualmente? Tal vez haya casos de uso para establecer manualmente el país aquí. De lo contrario, podemos verificar los encabezados en ciertos planes. En Vercel, obtienes información sobre el país basada en la IP. También hay paquetes de NPM que te permiten hacer eso. Y muchos otros proveedores enviarán esa información junto con las solicitudes, como la ubicación del usuario.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

Enrutamiento en React 18 y más allá
React Summit 2022React Summit 2022
20 min
Enrutamiento en React 18 y más allá
Top Content
Routing in React 18 brings a native app-like user experience and allows applications to transition between different environments. React Router and Next.js have different approaches to routing, with React Router using component-based routing and Next.js using file system-based routing. React server components provide the primitives to address the disadvantages of multipage applications while maintaining the same user experience. Improving navigation and routing in React involves including loading UI, pre-rendering parts of the screen, and using server components for more performant experiences. Next.js and Remix are moving towards a converging solution by combining component-based routing with file system routing.
RedwoodJS: El marco de aplicación React Full-Stack de tus sueños
React Summit Remote Edition 2021React Summit Remote Edition 2021
43 min
RedwoodJS: El marco de aplicación React Full-Stack de tus sueños
Top Content
Redwood JS is a full stack React app framework that simplifies development and testing. It uses a directory structure to organize code and provides easy data fetching with cells. Redwood eliminates boilerplate and integrates Jest and Storybook. It supports pre-rendering and provides solutions for authentication and deployment. Redwood is a cross-client framework that allows for building web and mobile applications without duplicating work.
Una Guía Práctica para Migrar a Componentes de Servidor
React Advanced 2023React Advanced 2023
28 min
Una Guía Práctica para Migrar a Componentes de Servidor
Top Content
React query version five is live and we'll be discussing the migration process to server components using Next.js and React Query. The process involves planning, preparing, and setting up server components, migrating pages, adding layouts, and moving components to the server. We'll also explore the benefits of server components such as reducing JavaScript shipping, enabling powerful caching, and leveraging the features of the app router. Additionally, we'll cover topics like handling authentication, rendering in server components, and the impact on server load and costs.
El Nuevo Router de Aplicaciones Next.js
React Summit 2023React Summit 2023
27 min
El Nuevo Router de Aplicaciones Next.js
Top Content
Today's Talk is about the Next.js App Router, which has evolved over the years and is now a core feature of Next.js. The Talk covers topics such as adding components, fetching remote data, and exploring layouts. It also discusses submitting form data, simplifying code, and reusing components. The App Router allows for coexistence with the existing pages router and enables data fetching at the layout level using React Server Components.
No sabes cómo hacer SSR
DevOps.js Conf 2024DevOps.js Conf 2024
23 min
No sabes cómo hacer SSR
The Talk covers the speaker's personal journey into server-side rendering (SSR) and the evolution of web development frameworks. It explores the use of jQuery for animations in SSR, the challenges faced in integrating React with Umbraco, and the creation of a custom SSR framework. The Talk also discusses the benefits of Next.js and the use of serverless artifacts for deployment. Finally, it highlights the features of Astro, including its function per route capability.
Una Saga de Problemas de Renderizado Web
Vue.js London 2023Vue.js London 2023
28 min
Una Saga de Problemas de Renderizado Web
This Talk discusses the problems faced in building and rendering web applications, different rendering methods and strategies, and the benefits of the Yamstack architecture. It covers server-side rendering, static site generation, incremental static regeneration, and edge rendering. The speaker demonstrates how to build a static site using a Hello CMS and the JAMstack architecture. Other topics include connecting Storyboard with a Nuxt application, mock data, hybrid rendering, and handling I18N with a static site generator.

Workshops on related topic

AI para Desarrolladores de React
React Advanced 2024React Advanced 2024
142 min
AI para Desarrolladores de React
Featured Workshop
Eve Porcello
Eve Porcello
El conocimiento de las herramientas de AI es fundamental para preparar el futuro de las carreras de los desarrolladores de React, y la suite de herramientas de AI de Vercel es una vía de acceso accesible. En este curso, examinaremos más de cerca el Vercel AI SDK y cómo esto puede ayudar a los desarrolladores de React a construir interfaces de transmisión con JavaScript y Next.js. También incorporaremos APIs de terceros adicionales para construir y desplegar una aplicación de visualización de música.
Temas:- Creación de un Proyecto de React con Next.js- Elección de un LLM- Personalización de Interfaces de Transmisión- Construcción de Rutas- Creación y Generación de Componentes - Uso de Hooks (useChat, useCompletion, useActions, etc)
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
React Summit 2022React Summit 2022
173 min
Construye una aplicación WordPress sin cabeza con Next.js y WPGraphQL
Top Content
WorkshopFree
Kellen Mace
Kellen Mace
En esta masterclass, aprenderás cómo construir una aplicación Next.js que utiliza Apollo Client para obtener datos de un backend de WordPress sin cabeza y usarlo para renderizar las páginas de tu aplicación. Aprenderás cuándo debes considerar una arquitectura de WordPress sin cabeza, cómo convertir un backend de WordPress en un servidor GraphQL, cómo componer consultas usando el IDE GraphiQL, cómo colocar fragmentos GraphQL con tus componentes, y más.
Next.js 13: Estrategias de Obtención de Datos
React Day Berlin 2022React Day Berlin 2022
53 min
Next.js 13: Estrategias de Obtención de Datos
Top Content
WorkshopFree
Alice De Mauro
Alice De Mauro
- Introducción- Prerrequisitos para la masterclass- Estrategias de obtención: fundamentos- Estrategias de obtención – práctica: API de obtención, caché (estática VS dinámica), revalidar, suspense (obtención de datos en paralelo)- Prueba tu construcción y sírvela en Vercel- Futuro: Componentes de servidor VS Componentes de cliente- Huevo de pascua de la masterclass (no relacionado con el tema, destacando la accesibilidad)- Conclusión
Crea un sitio web editable visualmente con Next.js utilizando React Bricks, con blog y comercio electrónico
React Summit 2023React Summit 2023
139 min
Crea un sitio web editable visualmente con Next.js utilizando React Bricks, con blog y comercio electrónico
Top Content
WorkshopFree
Matteo Frana
Matteo Frana
- React Bricks: por qué lo construimos, qué es y cómo funciona- Crea una cuenta gratuita- Crea un nuevo proyecto con Next.js y Tailwind- Explora la estructura del directorio- Anatomía de un Brick- Crea un nuevo Brick (Texto-Imagen)- Añade un título y descripción con edición visual RichText- Añade una imagen con edición visual- Añade controles de barra lateral para editar props (relleno y lado de la imagen)- Anidación de Bricks utilizando el componente Repeater- Crea un brick de galería de imágenes- Publica en Netlify o Vercel- Tipos de página y campos personalizados- Acceso a los valores meta de la página- Internacionalización- Cómo reutilizar contenido en varias páginas: Historias y incrustaciones- Cómo crear un comercio electrónico con datos de productos de una base de datos externa y páginas de aterrizaje creadas visualmente en React Bricks- Características empresariales avanzadas: permisos flexibles, estructura bloqueada, componentes visuales personalizados
De Todo App a B2B SaaS con Next.js y Clerk
React Summit US 2023React Summit US 2023
153 min
De Todo App a B2B SaaS con Next.js y Clerk
Top Content
WorkshopFree
Dev Agrawal
Dev Agrawal
Si eres como yo, probablemente tengas un millón de ideas para proyectos secundarios, algunas de las cuales incluso podrían hacerte ganar dinero como un micro SaaS, o podrían resultar ser la próxima startup de mil millones de dólares. Pero, ¿cómo sabes cuáles? ¿Cómo pasas de una idea a un producto funcional que puede ser puesto en manos de clientes que pagan sin renunciar a tu trabajo e invirtiendo todo tu tiempo y dinero en ello? ¿Cómo pueden competir tus proyectos secundarios en solitario con las aplicaciones construidas por enormes equipos y grandes empresas?
Construir productos SaaS ricos viene con desafíos técnicos como infraestructura, escalabilidad, disponibilidad, seguridad y subsistemas complicados como autenticación y pagos. Por eso, a menudo son los gigantes tecnológicos ya establecidos quienes pueden construir y operar productos de este tipo de manera razonable. Sin embargo, una nueva generación de devtools está permitiendo a los desarrolladores construir fácilmente soluciones completas que aprovechan la mejor infraestructura en la nube disponible, y ofrecen una experiencia que te permite iterar rápidamente en tus ideas por un bajo costo de $0. Se llevan todos los desafíos técnicos de construir y operar productos de software para que solo tengas que pasar tu tiempo construyendo las características que tus usuarios quieren, dándote una oportunidad razonable de competir contra el mercado al mantenerte increíblemente ágil y receptivo a las necesidades de los usuarios.
En esta masterclass de 3 horas comenzarás con una simple aplicación de gestión de tareas construida con React y Next.js y la convertirás en un producto SaaS completamente funcional y escalable integrando una base de datos escalable (PlanetScale), autenticación multi-tenant (Clerk), y pagos basados en suscripción (Stripe). También aprenderás cómo los principios del desarrollo de software ágil y el diseño impulsado por el dominio pueden ayudarte a construir productos rápidamente y de manera rentable, y competir con las soluciones existentes.
Construyendo Componentes de Servidor Reutilizables en NextJS
React Summit US 2023React Summit US 2023
88 min
Construyendo Componentes de Servidor Reutilizables en NextJS
Workshop
Will Bishop
Mettin Parzinski
2 authors
React continúa evolucionando su capacidad beta, los Componentes de Servidor de React, y continúan desarrollándolos en asociación con marcos como NextJS.En esta masterclass, los asistentes aprenderán qué son los Componentes de Servidor de React, cómo construirlos y usarlos eficazmente en NextJS, y se centrarán en una de las principales ventajas de React/NextJS: la reutilización a través de componentes.También cubriremos tecnologías beta relacionadas habilitadas por el directorio `app`, como los layouts anidados y las acciones del servidor (capacidad alfa/experimental).¡Únete a nosotros para esta masterclass práctica de 120 minutos!Tecnologías:
React, JavaScript/Typescript, NextJS, Miro