Как получить только часть статьи, отображаемой mdx, с помощью gatsby? Например, первые несколько предложений статьи в блоге mdx?

Я делаю блог, используя GatsbyJS + MDX. Для страницы со списком статей я хочу показать первые несколько предложений/абзацев каждой статьи (точно так же, как вы почти всегда видите в обычном блоге). Однако я не могу найти способ сделать это в mdx.

Например, я не могу просто обрезать файл .mdx (скажем, обрезать первые 1000 байт), иначе мы можем получить незакрытые теги и т. д., что приведет к путанице с mdx.

2 ответа

Если вы используетеgatsby-plugin-mdxвы можете открыть часть вашего файла mdx, добавивexcerptполе в свой запрос и укажите длину этой части, например:

      
query MyQuery {
  allMdx {
    nodes {
      excerpt(pruneLength: 100)
    }
  }
}

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

Например:

      {
  allMarkdownRemark {
    edges {
      node {
        excerpt(pruneLength: 280)
      }
    }
  }
}

При использовании многомерных выражений внешний узел будет отличаться от приведенного выше фрагмента, но до тех пор, пока вы используете excerptбудет доступно. Вы можете использовать gatsby-transformer-remarkпутем заполнения gatsbyRemarkPluginsобъект

      {
  resolve: `gatsby-plugin-mdx`,
  options: {
    gatsbyRemarkPlugins: [
      {
        resolve: `gatsby-transformer-remark`,
      },
    ],
  },

Для чрезвычайно настраиваемых сценариев вы можете использоватьgatsby-plugin-excerptsплагин.

Другие вопросы по тегам