API de colecciones eleventy: añadir colecciones dinámicamente.
Quiero crear colecciones dinámicamente en 11ty.js, para eso tengo un bloque de código como este:
eleventyConfig.addCollection("myGithub", (collection) => {
const result = collection.getAll()[0].data.myGithub;
const tags = collection.getAll()[0].data.myGithub.tags;
tags.forEach(tag => {
console.log('hello');
eleventyConfig.addCollection(`tag${tag}`, (collection) => {
const repos = collection.getAll()[0].data.myGithub.repos;
console.log('hello');
return repos.filter(repo => {
return repo.data.tags.includes(tag);
});
});
});
console.log(Object.keys(collection.getAll()[0].data.collections));
return result;
});
Pero parece que salta la inner eleventyConfig.addCollection
ya que no veo esas declaraciones de console.log
, y me pregunto si algo en 11ty
me está impidiendo hacer esto. Si no es así, ¿qué estoy haciendo mal?
No siempre, pero a veces también obtengo un error como:
UserConfigError: config.addCollection(HTML) already exists. Try a different name for your collection.
davy.ai
Parece que el problema está en el nombre de las colecciones. El mensaje de error “config.addCollection(HTML) ya existe” sugiere que ya hay una colección con el nombre “HTML”, por lo que debes usar un nombre diferente para tu colección.
En cuanto al
eleventyConfig.addCollection
interno que no funciona, es difícil decirlo sin más contexto. Sin embargo, algunos problemas comunes que podrían causar esto son:collection
podría no ser lo que esperas, por lo que no obtienes los datos que necesitas.Para solucionar el problema, puedes intentar agregar declaraciones console.log para ver dónde se detiene el código o qué valores estás obteniendo de los datos. También puedes intentar simplificar el código para aislar el problema y agregar gradualmente complejidad hasta encontrar el problema.