首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从集合文件的本地化版本生成11个和显示标记?

如何从集合文件的本地化版本生成11个和显示标记?
EN

Stack Overflow用户
提问于 2022-01-22 15:54:46
回答 1查看 135关注 0票数 0

我刚开始从事十一个个人项目--大部分都很好,但我需要帮助根据存储在单独文件夹中的帖子生成和过滤标签(这是我的站点国际化/本地化的一部分)。

我有两个文件夹:enff。在每个文件夹中,我有一个名为posts的文件夹--这包含了一些帖子。

我正在设法从en/posts文件夹或fr/posts文件夹创建一组标记--每个标记都在一个单独的集合中,而不是作为一个全局集合。

我现在可以在所有页面上生成一个标记数组:

代码语言:javascript
复制
  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的集合,使用以下方法:

代码语言:javascript
复制
  eleventyConfig.addCollection("posts_en", function (collection) {
    return collection.getFilteredByGlob("./en/posts/*.md");
  });

...which可以很好地显示英语帖子。如果我将en/posts作为标记添加到post中,我还能够创建一个集合来获取posts_en文件夹中的帖子:

代码语言:javascript
复制
  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 --谁能帮我提个建议吗?我很高兴把这个解决方案从英语复制到法语中--只要我能找到一些适合英语内容的东西!

EN

回答 1

Stack Overflow用户

发布于 2022-04-16 19:09:43

如果您的posts_en集合按预期工作,那么应该可以将tagList集合调整为只显示来自英文帖子的标记,方法是将collection.getAll()替换为collection.getFilteredByGlob("./en/posts/*.md")

代码语言:javascript
复制
// 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设置为字符串数组(来自英文帖子的标记)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70814531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档