Как понять логи c типов контента шаблонов блога Gatsby? - PullRequest
0 голосов
/ 17 января 2020

Я работаю со своим первым шаблоном Gatsby ( Hello Friend от Panr ), и у меня нет абсолютно никакого опыта с React. js.

Я пытаюсь понять некоторые логики c дизайна шаблона в 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?

Кроме того, как бы я go добавила дополнительные категории контента ?

Примечание. Я понимаю, что это неопределенный вопрос, который не совсем подходит для переполнения стека. Я хотел бы задать этот вопрос на форуме Gatsby-speci c, но я не верю, что он существует, и этот форум рекомендуется на странице сообщества Gatsby .

1 Ответ

2 голосов
/ 18 января 2020

Да, сейчас есть две категории контента, и по умолчанию перечислены только сообщения.

Сортировка, вероятно, довольно наивна, потому что в то время, когда я писал стартер, я не знал ни одной хороший плагин для обработки отдельных нумераций страниц (предыдущая / следующая запись или страница) для каждого типа контента, поэтому я сделал для этого собственную логику c. sortedPages - это массив [...typeA, ...typeB], и позже каждый элемент проверяется на наличие братьев и сестер для создания собственной навигации (предыдущая / следующая).

Если вы хотите создать другой тип содержимого, вы можете сделать это в так же, как это определено в стартере. Просто добавьте еще один gatsby-source-filesystem экземпляр плагина, например:

  {
      resolve: `gatsby-source-filesystem`,
      options: {
        name: `typeC`,
        path: `${__dirname}/src/typeC`,
      },
    },

и создайте папку typeC внутри src dir с файлами уценки. И это все 101

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...