Tengo un sitio tipo blog en el que he estado trabajando, que está casi completo. Usé Eleventy y ahora conecté Netlify CMS, lo que me obligó a reestructurar algunos datos.
Netlify CMS requiere que tenga archivos separados para los datos del widget de relación, en este caso, los autores. Así que tengo un directorio de autores, que actualmente tiene 3 archivos json: jbloggs.json, etc., cada objeto es plano, siendo un ejemplo de uno:
./src/_data/authors/jbloggs.json
{
"key": "jbloggs",
"name": "Joe Bloggs",
// ... Removed for brevity
}
Inicialmente creé una serie de objetos y todo funcionaba muy bien:
./src/autores.json
[
{
"key": "jbloggs",
"name": "Joe Bloggs",
// ... Removed for brevity
},
{
"key": "user2",
"name": "User Two",
// ... Removed for brevity
}
]
Lo que debo hacer es tomar la cantidad de archivos que haya en mi directorio de autores y agregar los objetos de cada archivo a la matriz en mi archivo author.json. Intenté usar json-concat, sin éxito. Tengo fs y json-concat requeridos en mi archivo eleventy:
const files = [];
const {resolve} = require('path');
const source = resolve('./src/_data/authors');
const target = resolve('./src/authors.json');
fs.readdirSync(source).forEach((file) => {
files.push(file);
})
jsonConcat({ src: files, dest: target }, function (json) {
console.log(files); // returns an array of the correct filenames
console.log(target); // returns the path to the target file /Users/darrenlee/Desktop/WebApp/src/authors.json
console.log(json); // returns null
});
En mi terminal también obtengo: [11ty] Archivo cambiado: src/authors.json, pero el archivo no ha cambiado, todavía tengo solo 2 autores allí y el objetivo es tener todos los autores (actualmente 3) de los archivos del directorio de autores.
Cualquier ayuda sería muy apreciada.
Gracias
Resultó que estaba complicando demasiado las cosas y no necesitaba agregar nada al archivo author.json.
De hecho, ahora eliminé esos archivos porque acabo de crear una nueva colección:
eleventyConfig.addCollection("contributors", author => Object.values(author.items[0].data.contributors));
Y ahora, en lugar de llamar a los datos globales de mis authors , simplemente llamo a collections.contributors en mis plantillas de Nunjucks. Como siempre, probablemente haya una manera mucho más limpia, pero tengo filtros existentes para mostrar todas las guías de un autor elegido y su biografía en sus publicaciones, etc.
Está funcionando bien, así que por ahora se envía, tal vez intente replicar esto sin crear la colección adicional en una fecha posterior, si alguna vez lo descubro.