Рубрики
Без рубрики

Создание пользовательских блоков контента: WordPress Gutenberg против sanity.io

WordPress 5.0 поставляется с совершенно новым богатым текстовым редактором по имени Гутенберг. Это h … Tagged with JavaScript, WebDev, React, начинающие.

WordPress 5.0 поставляется с совершенно новым богатым текстовым редактором под названием Гутенберг Анкет Он долгождается и создал оба гудца и спор . Обещание Гутенберга – это настраиваемость, особенно когда речь идет о добавлении пользовательских блоков контента. Если вы хотите начать с Гутенберга, вы можете прочитать это Отличное введение в журнале Smashing Анкет Он встроен в React и позволяет разработчикам расширить основные функциональность редакторов.

Пользовательский отзыв тип блока в WordPress Gutenberg. Опубликовано на smashingmagazine.com

Мы не смогли устоять, хотя. Поскольку наличие пользовательских блоков контента находится в ДНК Здравомыслие Мы хотели показать, как легко воссоздать слайдер отзывов, который прочитал 12 минут, а статья 10 части представляет вас. Как одиннадцатый момент времени легче. 🐇

Конечно, сравнение заходит только так далеко. WordPress – это классический CMS с шаблонным двигателем, в то время как вы можете использовать здравомыслие в качестве безголостного CMS с фронтальной структурой, которую вы бы предпочли, будь то Vue, React или что -то еще.

Если вы еще не пробовали здравомыслие, для начала работы потребуется всего две минуты. Чтобы создать проект и получить мгновенный API контента в режиме реального времени, а также подключенный редактор с открытым источником, запустите эту линию в вашем терминале:

    npm install -g @sanity/cli && sanity init

Если вы выберете шаблон блога в инструменте CLI, вы в значительной степени настроены!

Модель содержания слайдера отзывчика

В учебном пособии по журналу Smashing вы научитесь создавать «слайдер отзывов», обычно используемый на маркетинговых страницах как способ визуализации социальных доказательств вашего продукта.

Чтобы воссоздать слайдер WordPress Slider для здравомыслия, вам нужно только определить его модель контента. Мы позаботимся о полях ввода и синхронизации в режиме реального времени в хранилище данных.

Модель контента довольно проста: Во -первых, мы делаем тип для STEDIMONIALSLIDER Анкет Это объект с массивом (который также содержит порядок отзывов) отзывных объектов с полями Автор , изображение , Контент и Ссылка к источнику. Я сделал поле содержания быть чистым текстом, но мы также могли бы использовать Блокконтент Если мы хотим иметь богатый текст (и слайдер в слайдере, если вы увлекаетесь рекурсивными шаблонами контента). Если мы добавим Параметры: {Hotspot: true} В поле изображения ваш редактор может даже установить пользовательские горячие точки и культуры для изображения, что может быть полезно для изображения.

 const testimonialSlider = {
  name: 'testimonialSlider',
  title: 'Testimonial slider',
  type: 'object',
  fields: [
    {
      name: 'slider',
      title: 'Slider',
      type: 'array',
      of: [
        {
          name: 'testimonial',
          title: 'Testimonial',
          type: 'object',
          fields: [
            {
              name: 'author',
              title: 'Author',
              type: 'string'
            },
            {
              name: 'image',
              title: 'Image',
              type: 'image'
            },
            {
              name: 'content',
              title: 'Content',
              type: 'text'
            },
            {
              name: 'link',
              title: 'Link',
              type: 'url'
            }
          ]
        }
      ]
    }
  ]
}

const blockContent = {
  name: 'blockContent',
  type: 'array',
  of: [
    {
      type: 'block'
    },
    {
      type: 'testimonialSlider'
    }
  ]
}

export default {
  testimonialSlider,
  blockContent
}

Это в значительной степени. Пользовательский интерфейс будет чистым и может использоваться сразу.

Чтобы получить эту хорошую подготовленную структуру JSON для вашего фронта, вы можете использовать этот запрос GROQ, предполагая, что ваш богатый текст назван Контент и используется в типе документа Пост :

*[_type == "post"]{
  ...,
  content[]{
    ...,
    _type == "testimonialSlider" => {
      slider[]{
        ...,
        image{
          ...,
          asset->
        }
      }
    }
  }
}

Пользовательский предварительный компонент

Вы также можете добавить пользовательский компонент предварительного просмотра с некоторым кодом React:

import React from 'react'
import client from 'part:@sanity/base/client'
import urlBuilder from '@sanity/image-url'
const urlFor = source => urlBuilder(client).image(source)

const sliderPreview = ({ value = {} }) => {
  return (
    
      {value &&
        value.slider.map(slide => (
          
"{slide.content}"
{slide.author} – {slide.link}
))}
) } export default sliderPreview

Включите его в свою схему, добавив это в свою STEDIMONIALSLIDER Схема типа контента:

import React from 'react'
import sliderPreview from './sliderPreview.js'

const testimonialSlider = {
  name: 'testimonialSlider',
  title: 'Testimonial slider',
  type: 'object',
  preview: {
    select: {
      slider: 'slider'
    },
    component: sliderPreview
  },
  fields: [
    /* the fields */
  ]
}

Здесь я использовал добрый html -элемент получить эффект прокрутки; Вы, вероятно, не должны делать то же самое:

Помимо выступлений: Преимущество глубоко напечатанного богатого текстового контента

Этот пример слайдера отзывов тесно связан с конкретной презентацией на веб -странице, которая имеет смысл в WordPress, потому что он создан для отображения и управления веб -сайтом. WordPress сохраняет вход в Гутенберг как HTML, что вы в конечном итоге выходите из API. HTML в API -интерфейсах, как правило, не то, что вы хотите, если вы хотите использовать его в своей любимой фронтальной структуре или в чем -то, что должно отображать в чем -то, кроме веб -браузера.

Здравомыслие Сохраняет контент в редакторе как Портативный текст , что делает его портативным по всей размере, но также делает богатый текстовый запрос. Должно быть легко создавать пользовательские редакционные впечатления, с помощью пользовательских типов и входов, которые имеют смысл в вашем проекте или организации, и следует легко взять этот контент и соответствовать ему любой форме презентации.

Оригинал: “https://dev.to/sanity-io/creating-custom-content-blocks-wordpress-gutenberg-vs-sanityio-4k5m”