Docusaurus v2 - 首页最新博客列表

3
在Docusaurus v2中,是否有一种方法可以生成最近博客的列表,并用于填充主页(src/pages/index.js)上的块?我认为这类似于如何设置<Feature ... />features列表。
在Docusaurus v1中,通过下面的代码实现了这一点,但我找不到一个简单的方法来获取所有博客文章的列表相当于MetadataBlog
const MetadataBlog = require("../../core/MetadataBlog.js");
...
<h2>Latest Blog Posts</h2>
<ul>
  {MetadataBlog.slice(0, 5).map((item, index) => (
    <li key={index}>
      <a href={`/blog/${item.path}`}>{item.title}</a>{" "}
        <small>
          {new Date(item.date).toLocaleDateString("en-US", {
            weekday: undefined,
            year: "numeric",
            month: "long",
            day: "numeric"
          })}
        </small>
      </li>
    ))}
</ul>

经过仔细研究代码,我认为我只需要从@docusaurus/plugin-content-blog/lib/blogUtils.js调用generateBlogPosts函数。您能指导我如何从src/pages/index.js调用该函数吗?谢谢。

2个回答

2

我能够通过对原始代码进行微小的更改来完成这个黑客攻击:

const recentPosts = require("../../.docusaurus/docusaurus-plugin-content-blog/default/blog-post-list-prop-default.json");

<ul>
  {recentPosts.items.slice(0, 5).map((item, index) => (
    <li key={index}>
      <a href={`${item.permalink}`}>{item.title}</a>{" "}
    </li>
  ))}
</ul>

看起来它能工作,但它取决于可能会改变的内部机制。


0

目前还没有一个简洁的方法,恐怕只能自己编写一个类似于博客插件的插件,并获取最新的页面并生成一个JSON文件,然后在首页进行导入。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接