首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自数据的11个嵌套页

来自数据的11个嵌套页
EN

Stack Overflow用户
提问于 2022-05-20 12:24:38
回答 1查看 94关注 0票数 0

我是新来的十一,并试图创建一个看似简单的网站结构,但我正在挣扎,所以会感谢任何帮助。

我有以下数据:

代码语言:javascript
复制
{
  authors: [
    {
      name: "John Smith",
      books: [
        {
          title: "John's book 1",
          price: 9.99
        },
        {
          title: "JS book 2",
          price: 10.99
        }
      ]
    },
    {
      name: "Mickey Mouse",
      books: [
        {
          title: "Mice to meet you",
          price: 7.99
        }
      ]
    }
  ]
}

对于这些数据,我希望创建以下页面层次结构:

代码语言:javascript
复制
/authors
/authors/john-smith
/authors/john-smith/johns-book-1
/authors/john-smith/js-book-2
/authors/mickey-mouse
/authors/mickey-mouse/mice-to-meet-you

我已经创建了/authors/authors/john-smith/authors/mickey-mouse页面,但是,我正在与“图书”页面进行斗争。

我不知道如何创建页面,我也希望在页面上显示作者的名字,也不知道如何访问数据。

例如,/authors/mickey-mouse/mice-to-meet-you应包含以下内容:

代码语言:javascript
复制
<h1>Mice to meet you</h1>
<h2>By Mickey Mouse</h2>

谢谢

EN

回答 1

Stack Overflow用户

发布于 2022-06-02 04:38:48

我可能会通过创建一个全局JavaScript数据文件来处理这个问题,它可以将作者的数据操作到一个图书列表中:

代码语言:javascript
复制
// _data/books.js (for example)
const data = require('./data.json')

module.exports = function () {
  // `reduce` takes in an accumulator (empty array in this case)
  // and then iterates through the array
  const books = data.authors.reduce((acc, author) => {
    // for every author, we look at every book
    author.books.forEach((book) => {
      // add the book to the new array, adding in the author's name
      acc.push({author: author.name, ...book})
    })
    // return the accumulator for the next iteration
    return acc
  }, [])

  // the data now looks like
  // [ { author: "John Smith", title: "John's book 1", ... }, ... ]
  return books
}

我们现在可以通过这一系列书籍进行分页

代码语言:javascript
复制
---
pagination:
  data: books # assuming the data file is books.js
  size: 1
  alias: book
permalink: "/authors/{{ book.author }}/{{ book.title }}/"
---

# {{ book.title }}
## By {{ book.author }}

(上面的示例假设您在Nunjucks模板引擎中使用Markdown,但是它可以处理您所使用的任何东西。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72318897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档