我刚开始从事十一个个人项目--大部分都很好,但我需要帮助根据存储在单独文件夹中的帖子生成和过滤标签(这是我的站点国际化/本地化的一部分)。
我有两个文件夹:en和ff。在每个文件夹中,我有一个名为posts的文件夹--这包含了一些帖子。
我正在设法从en/posts文件夹或fr/posts文件夹创建一组标记--每个标记都在一个单独的集合中,而不是作为一个全局集合。
我现在可以在所有页面上生成一个标记数组:
eleventyConfig.addFilter("filterTagList", filterTagList);
// Create an array of all tags
eleventyConfig.addCollection("tagList", function (collection) {
let tagSet = new Set();
collection.getAll().forEach(item => {
(item.data.tags || []).forEach(tag => tagSet.add(tag));
});
return filterTagList([...tagSet]);
});(filterTagList是一个单独的过滤器,它排除了某些冗余标记)
我可以在名为posts_en的en/post文件夹中创建一个基于posts的集合,使用以下方法:
eleventyConfig.addCollection("posts_en", function (collection) {
return collection.getFilteredByGlob("./en/posts/*.md");
});...which可以很好地显示英语帖子。如果我将en/posts作为标记添加到post中,我还能够创建一个集合来获取posts_en文件夹中的帖子:
eleventyConfig.addCollection("tagGroup", function (collection) {
console.log(">>>> TAGGROUP:", collection.getFilteredByTags("posts_en"));
return collection.getFilteredByTags("posts_en");
});(我在此代码提取中检查了console.log语句--它呈现了我用posts_en标记的所有帖子,但我不确定这是否也保留了其他标记?该集合只需要包含带有适当标记的英文帖子,而不需要法语内容(反之亦然,用于FR内容)。
我的问题是,我无法调整原始的tagList方法,只能在en文件夹(或fr文件夹)中包含帖子。
我尝试将tagList更改为tagList_en,并将collection.getAll()调整为只引用posts_en集合--这是编译的,但在标记页上没有给出任何结果。我已经在网上浏览过这么多的帖子,但是到目前为止,没有joy --谁能帮我提个建议吗?我很高兴把这个解决方案从英语复制到法语中--只要我能找到一些适合英语内容的东西!
发布于 2022-04-16 19:09:43
如果您的posts_en集合按预期工作,那么应该可以将tagList集合调整为只显示来自英文帖子的标记,方法是将collection.getAll()替换为collection.getFilteredByGlob("./en/posts/*.md")。
// Create an array of all tags
eleventyConfig.addCollection("tagList", function (collection) {
let tagSet = new Set();
collection.getFilteredByGlob("./en/posts/*.md").forEach(item => {
(item.data.tags || []).forEach(tag => tagSet.add(tag));
});
return filterTagList([...tagSet]);
});这将将collections.tagList设置为字符串数组(来自英文帖子的标记)。
https://stackoverflow.com/questions/70814531
复制相似问题