Как понять логику типов содержимого шаблона блога 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 папка внутри srcdir с файлами уценки. Вот и все

Другие вопросы по тегам