You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Nuxt Content中获取文件夹结构并实现分类展示?

如何获取Nuxt Content的文件夹结构作为分类展示

我的content目录结构如下:

content /
-- | A /
---- | an_article.md
-- | B /
---- | another_one.md
-- | C /
---- | etc.md

我希望将这些文件夹(A、B、C)作为网站分类,在首页展示为可展开的列表(点击分类能展开显示对应文章)。我已经知道如何获取单个分类下的文章,但不清楚如何获取content根目录下的所有文件夹结构。

期望的展示效果示例

JavaScript代码

$('.sub-menu ul').hide();
$(".sub-menu a").click(function () {
  event.preventDefault();
  $(this).parent(".sub-menu").children("ul").slideToggle(200);
  $(this).parent('.sub-menu').siblings().find('ul').slideUp(200);
});

CSS代码

body {
  font-size: 1em;
  font-family: arial;
}
a {
  text-decoration: none;
}

.menu {
  width: 50%;
}
ul {
  list-style-type: none;
  margin: 0;
  padding: 0;
}

.sub-menu li {
  border-top: 1px solid black;
}

li.sub-menu {
  margin-left: 20px;
}

HTML结构

<script src="jquery.min.js"></script>
<body>
  <ul class="menu">
    <li class='sub-menu'> <a href='#'>A</a>
      <ul>
        <li class='sub-menu'>
          <img src="/images/a-project.jpg" alt="项目A封面"> <br>
          <a href='/articles/A/an_article'>项目A相关内容</a>
      </ul>
    </li>
    <li class='sub-menu'> <a href='#'>B</a>
      <ul>
        <li class='sub-menu'>
          <img src="/images/b-project.jpg" alt="项目B封面"> <br>
          <a href='/articles/B/another_one'>项目B相关内容</a>
      </ul>
    </li>
    <li class='sub-menu'> <a href='#'>C</a>
      <ul>
        <li class='sub-menu'> 
          <img src="/images/c-project.jpg" alt="项目C封面"> <br>
          <a href='/articles/C/etc'>项目C相关内容</a>
      </ul>
    </li>
  </ul>
</body>

现有获取单个分类文章的代码

export default {
  async asyncData ({ $content, params }) {
    const articles = await $content('A', params.slug)
      .only(['title', 'description', 'img', 'slug'])
      .sortBy('createdAt', 'asc')
      .fetch()

    return {
      articles
    }
  }
}

内容的提问来源于stack exchange,提问作者Aurore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 11:57:16