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 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 los CMS tradicionales. Su solución permite a las empresas estructurar y consultar contenido en cualquier lugar utilizando el Sanity studio y la aplicación 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 Sanity studio permite modelar páginas, artículos y banners, con banners que se muestran a los visitantes según su país. La solución implica el uso de consultas Grok para obtener el banner correcto basado en la información del país, demostrando personalización basada en localización y consulta de contenido dinámico.

1. Introduction to Sanity and the Problem

Short description:

Hola, soy Simeon, un ingeniero de soluciones en sanity.io. Proveemos una plataforma de contenido para contenido estructurado que reemplaza los CMS tradicionales. Nuestra solución te permite estructurar y consultar el contenido de tu negocio en cualquier lugar, usando el estudio de Sanity y la aplicación de React de código abierto. Trabajamos con grandes empresas para aprovechar lo mejor de la pila web moderna. 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 tu sitio web y en su lugar te permite estructurar todo el contenido de tu negocio y consultarlo donde quieras. Puedes usar el estudio de Sanity y la aplicación de React de código abierto, que puedes alojar donde quieras o desplegar en nuestra infraestructura y realmente configurar la mejor experiencia de edición para tu equipo que tenga sentido para tu flujo de trabajo y tus necesidades.

Trabajamos con muchas grandes empresas que quieren aprovechar lo mejor de una pila web moderna. Ahora, el problema que vamos a resolver 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 tus visitantes a medida que llegaban a cada página. Pero ahora que construimos estáticamente muchas páginas con anticipación y las servimos en CDNs distribuidas globalmente, esos archivos estáticos son exactamente los mismos, entonces ¿cómo envías un dato personalizado 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 and Banner Component

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 usando una ruta API. Configura el estado y rastrea la fecha cuando se ve el banner. La ruta API verifica la información del país, permitiendo la anulación manual o comprobando los encabezados y la información de IP.

Aquí tenemos el estudio de Sanity de un minorista de dulces en línea ficticio. Ahora, tu estudio podría 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.

Ahora, estos son los banners que vamos a mostrar a los visitantes a medida que llegan a la página, y va a depender de en qué país se encuentren. Estoy en el Reino Unido, así que quiero asegurarme de que vean este contenido aquí. Primero, tenemos un menú desplegable aquí, que se llena con una lista de países que viene de un paquete npm, y este es el beneficio del contenido estructurado en archivos de JavaScript, ya que te permite hacer esquemas casi infinitamente configurables.

Luego tenemos un campo de cadena aquí para el título, un campo de texto para el contenido, y un campo de imagen donde hemos traído una encantadora imagen del Reino Unido aquí de una fuente de activos de Unsplash. Así que ese es el banner que queremos servir a los visitantes, y echemos un vistazo a cómo va a lucir. 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í me sirven ese banner porque es donde estoy. Entonces, ¿cómo funciona esto? Vamos a sumergirnos en algo de código.

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

Ahora, un componente de banner aquí va a configurar algún estado, y también va a rastrear usando este hook de estado pegajoso, que todo lo que hace es asegurarse de que registremos alguna información en el almacenamiento local. Y vamos a almacenar la fecha de cuando vi este banner. Y sería posible extender este componente para decir, si no he visto este banner durante, digamos, 24 horas, podría servirse nuevamente. Así que lo que vamos a hacer aquí cuando el componente se monte es primero obtener esta URL del banner. Y si el estado no es correcto, vamos a establecer que el banner ha sido visto o si está vacío por cualquier 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 el banner ha sido visto. Y si no tenemos ningún dato porque hemos visto esto antes o la obtención falló y no devolvió datos, entonces este componente no hace nada. Sin embargo, si obtenemos datos del banner, entonces tenemos algo de frame of motion y algo de tailwind para estilizar ese componente que se carga en la vista allí con una agradable animación y estilo. Así que echemos un vistazo a nuestra ruta API. Así que a medida que la solicitud llega a esta ruta API, va a verificar primero, qué información del país tenemos. Primero, va a verificar, ¿lo anulamos manualmente? Quizás habría 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 NPM que te permiten hacer eso. Y muchos otros proveedores enviarán esa información con las solicitudes, como dónde está el 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)
Tracing: Frontend Issues With Backend Solutions
React Summit US 2024React Summit US 2024
112 min
Tracing: Frontend Issues With Backend Solutions
Featured WorkshopFree
Lazar Nikolov
Sarah Guthals
2 authors
Los problemas de frontend que afectan a tus usuarios a menudo son provocados por problemas de backend. En esta masterclass, aprenderás cómo identificar problemas que causan páginas web lentas y malos Core Web Vitals usando tracing.
Luego, pruébalo tú mismo configurando Sentry en un proyecto Next.js ya preparado para descubrir problemas de rendimiento, incluyendo consultas lentas a la base de datos en una sesión interactiva de programación en pareja.
Saldrás de la masterclass siendo capaz de:- Encontrar problemas de backend que podrían estar ralentizando tus aplicaciones de frontend- Configurar tracing con Sentry en un proyecto Next.js- Depurar y solucionar problemas de rendimiento deficiente usando tracing
Este será un evento en vivo de 2 horas donde tendrás la oportunidad de codificar junto con nosotros y hacernos preguntas.
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
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.
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