Как понять логику типов содержимого шаблона блога Gatsby?
Я работаю со своим первым шаблоном Gatsby (Hello Friend от Panr), и у меня нет абсолютно никакого опыта работы с React.js.
Я пытаюсь понять логику дизайна шаблона в gatsby-node.js
а также gatsby-config.js
- в частности:
От gatsby-config.js
:
{
resolve: `gatsby-source-filesystem`,
options: {
name: `posts`,
path: `${__dirname}/src/posts`,
},
},
{
resolve: `gatsby-source-filesystem`,
options: {
name: `pages`,
path: `${__dirname}/src/pages`,
},
},
И из gatsby-node.js
:
const sortedPages = markdownPages.sort((pageA, pageB) => {
const typeA = getType(pageA.node)
const typeB = getType(pageB.node)
return (typeA > typeB) - (typeA < typeB)
})
const posts = allNodes.filter(
({ internal, fileAbsolutePath }) =>
internal.type === 'MarkdownRemark' &&
fileAbsolutePath.indexOf('/posts/') !== -1,
)
// Create posts index with pagination
paginate({
createPage,
items: posts,
component: indexTemplate,
itemsPerPage: siteMetadata.postsPerPage,
pathPrefix: '/',
})
Правильно ли я слежу за этим, полагая, что существует две категории контента:
1.pages
2.posts
И сообщения пронумерованы (разбиты на страницы), а страницы нет?
Что означает сортировка pageA
а также pageB
достичь?
Кроме того, как мне добавить дополнительные категории контента?
Примечание: я понимаю, что это расплывчатый вопрос, который не подходит для stackru. Я бы задал этот вопрос на форуме, посвященном Гэтсби, но я не верю, что он существует, и это форум, рекомендованный на странице сообщества Гэтсби.
1 ответ
Да, сейчас есть две категории контента, и по умолчанию перечислены только сообщения.
Сортировка, вероятно, довольно наивна, потому что в то время, когда я писал стартовый, я не знал ни одного хорошего плагина для обработки отдельных страниц (предыдущий / следующий пост или страница) для каждого типа контента, поэтому я сделал для этого свою собственную логику. sortedPages
это массив [...typeA, ...typeB]
а позже каждый элемент проверяется на наличие братьев и сестер для создания собственной навигации (предыдущая / следующая).
Если вы хотите создать другой тип контента, вы можете сделать это так же, как это определено в стартере. Просто добавьте ещеgatsby-source-filesystem
экземпляр плагина, например:
{
resolve: `gatsby-source-filesystem`,
options: {
name: `typeC`,
path: `${__dirname}/src/typeC`,
},
},
и создать typeC
папка внутри src
dir с файлами уценки. Вот и все