Javascript Eleventy站点如何显示目录中的页面列表?
我正在建立一个新网站,我遇到了一个小小的障碍。我的页面被组织成子目录。我希望每个目录的索引页列出该目录中的所有页面 例如:Javascript Eleventy站点如何显示目录中的页面列表?,javascript,node.js,static-site,Javascript,Node.js,Static Site,我正在建立一个新网站,我遇到了一个小小的障碍。我的页面被组织成子目录。我希望每个目录的索引页列出该目录中的所有页面 例如: |--section1 | |--index.njk // this should list /section1/page1/, /section2/page2/, etc. | |--page1.md | |--page2.md | --(etc...) |--section2 | |--index.njk // this should list /secti
|--section1
| |--index.njk // this should list /section1/page1/, /section2/page2/, etc.
| |--page1.md
| |--page2.md
| --(etc...)
|--section2
| |--index.njk // this should list /section2/page1/, etc.
| |--page1.md
| --(etc..)
看起来Eleventy通过其特性提供了类似的功能。然而,集合似乎只使用标记中提供的数据
我可以通过在每个page.md
的前面指定标记:[“section1”]
来获得所需的输出。然而,这意味着需要维护更多的冗余元数据
看起来我还可以使用eleventyConfig.addCollection
函数生成所需的集合,该函数将对collections.all()
进行排序,并根据它们的outputPath
返回它们。但这让我感觉很不舒服,我想知道是否有更优雅的解决方案
理想情况下,我希望能够在我的index.njk
模板中放置类似的内容:
{%- for page in directory -%}
{# do stuff #}
{%- endfor -%}
或许
{%- for page in collections.directory -%}
{# do stuff #}
{%- endfor -%}
有什么我遗漏的吗?我发现了
您可以添加一个标记,并将目录名添加为标记
例如,section1/section1.json
将包含:
{
"tags": ["Section 1"]
}
这将应用于该目录中的所有页面。但是,在各个页面中指定的任何标记都将覆盖它。您必须启用该功能以合并目录和页面标记。只需添加eleventyConfig.setDataDeepMerge(true)
到您的.eleventy.js
配置文件
文档说明,在未来版本中,默认情况下将启用此功能。在撰写本文时,它仍然只是选择性加入