Как сделать автоматическую ссылку на другой пост в Sanity.io?

Недавно я попробовал sanity.io CMS для управления контентом в моем личном блоге. однако мне трудно найти часть в документации об «автоматических ссылках» (это всего лишь мой термин). Я хочу, чтобы для каждого моего сообщения в блоге были данные о следующем и предыдущем сообщении, поэтому я могу создать кнопку внизу для перехода к следующему или предыдущему сообщению в блоге. как я могу этого добиться? спасибо


person muhsalaa    schedule 26.06.2020    source источник


Ответы (1)


Для меня это работа скорее для запроса, чем для справки.

Невозможно автоматически ссылаться на что-то так, как вы описываете, однако есть несколько способов добиться вашего эффекта:

1. Свяжите их вручную

2. Создайте настраиваемое поле ввода, которое запрашивает ваши предыдущие / следующие сообщения. Подробнее о настраиваемых компонентах ввода см. Здесь: https://www.sanity.io/docs/custom-input-widgets

3. Используйте запрос GROQ, чтобы получить все сообщения и найти те, которые вам нужны (на JS):

const posts = await Sanity.fetch(`*[_type == 'post']`);

const currentPostIndex = posts.findIndex(post => post.id === currentPost.id);
const previousPost = posts[currentPostIndex - 1];
const nextPost = posts[currentPostIndex + 1];

4. Добавьте запросы даты, чтобы получить соседние сообщения с помощью GROQ (на JS):

const posts = await Sanity.fetch(`*[_type == 'post' && _id == '${currentPost.id}' ][0] {
  'currentPost': {
    ...
  },
  'previousPost': *[_type == 'post' && _createdAt < ^._createdAt][0],
  'nextPost': *[_type == 'post' && _createdAt > ^._createdAt] | order(_createdAt asc)[0]
}`);

const currentPostIndex = posts.findIndex(post => post.id === currentPost.id);
const previousPost = posts[currentPostIndex - 1];
const nextPost = posts[currentPostIndex + 1];

Подробнее о GROQ https://www.sanity.io/docs/query-cheat-sheet

person JLF    schedule 07.07.2020