Docusaurus v2 - список последних блогов для домашней страницы

в Docusaurus v2 есть способ создать список недавних блогов, который затем можно использовать для заполнения блока на главной странице (src/pages/index.js)? Я думаю о чем-то похожем на список features, который затем устанавливается <Feature ... />.

В 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>

Немного покопавшись в коде, я считаю, что просто хочу иметь возможность вызывать соединение generateBlogPosts с @docusaurus/plugin-content-blog/lib/blogUtils.js. Есть какие-нибудь указатели на то, как я могу вызвать эту функцию из src/pages/index.js? Спасибо


person Tom Brien    schedule 18.02.2020    source источник


Ответы (2)


Боюсь, что на данный момент нет элегантного способа. Вы можете написать свой собственный плагин, похожий на плагин блога, извлекать самые последние страницы и сгенерировать файл JSON для импорта на страницу индекса.

person Yangshun Tay    schedule 05.03.2020

Я смог взломать это вместе с небольшим изменением кода OP:

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>

Кажется, это работает, хотя это зависит от внутренних компонентов, которые могут измениться.

person David Radcliffe    schedule 14.04.2021