Недавно я попробовал sanity.io CMS для управления контентом в моем личном блоге. однако мне трудно найти часть в документации об «автоматических ссылках» (это всего лишь мой термин). Я хочу, чтобы для каждого моего сообщения в блоге были данные о следующем и предыдущем сообщении, поэтому я могу создать кнопку внизу для перехода к следующему или предыдущему сообщению в блоге. как я могу этого добиться? спасибо
Как сделать автоматическую ссылку на другой пост в Sanity.io?
Ответы (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