На моих сайтах Gatsby JS я классифицировал статьи, и мне удалось создать страницу для каждой категории и разбить ее на страницы на основе максимального количества статей, которые будут отображаться на странице.
Проблема заключается в том, что вместо вычисления точного количества существующих страниц в категории мой код вычисляет общее количество существующих страниц (на основе всех статей, а не статей по категориям).
Это код:
Гэтсби-node.js
let categories = []
_.each(result.data.allMarkdownRemark.edges, edge => {
if (_.get(edge, "node.frontmatter.categories")) {
categories = categories.concat(edge.node.frontmatter.categories)
}
})
const categoryarticles = categories.filter(category =>{
return category === category
})
const categoryarticlesPerPage = 6
const numPages = Math.ceil(categoryarticles.length / categoryarticlesPerPage)
//Creating a PAGINATED page for each category, so that any category page will only display a certain amount of articles (defined in categoryarticlesPerPage)
Array.from({ length: numPages }).forEach((el, i) => {
categories.forEach(category => {
createPage({
path: i === 0 ? `/${_.kebabCase(category)}` : `/${_.kebabCase(category)}/${i + 1}`,
component: categoryTemplate,
context: {
category,
limit: categoryarticlesPerPage,
skip: i * categoryarticlesPerPage,
numPages,
currentPage: i + 1,
},
})
})
})
Ошибка несомненно в категории const.
Желательным результатом было бы вычисление количества статей по категориям, чтобы разбиение на категории начало работать должным образом (сейчас создается больше страниц, чем необходимо, поскольку учитывается весь объем статей, представленных на веб-сайте).
Любая подсказка?
Спасибо.