Modified hugo.toml to use section in post front-matter for permalinks Updated layouts/_default/single.html to handle posts without categories Modified scripts/generate-content.js to organize content by category Deleted content/_index.md and added new category directories
71 lines
2.1 KiB
JavaScript
71 lines
2.1 KiB
JavaScript
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const DATA_DIR = path.join(__dirname, '..', 'data', 'wordpress');
|
|
const CONTENT_DIR = path.join(__dirname, '..', 'content');
|
|
|
|
function generateContent() {
|
|
const posts = JSON.parse(fs.readFileSync(path.join(DATA_DIR, 'posts.json'), 'utf8'));
|
|
|
|
// Ensure content directory exists
|
|
if (!fs.existsSync(CONTENT_DIR)) {
|
|
fs.mkdirSync(CONTENT_DIR, { recursive: true });
|
|
}
|
|
|
|
posts.forEach(post => {
|
|
const slug = post.slug;
|
|
const date = new Date(post.date);
|
|
const year = date.getFullYear();
|
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
|
|
// Get the primary category (first category in the list)
|
|
const primaryCategory = post._embedded?.['wp:term']?.[0]?.[0];
|
|
const categorySlug = primaryCategory ? primaryCategory.slug : 'non-classe';
|
|
|
|
const contentDir = path.join(CONTENT_DIR, categorySlug, `${year}-${month}-${slug}`);
|
|
// const contentDir = path.join(CONTENT_DIR, `${year}-${month}-${slug}`);
|
|
|
|
if (!fs.existsSync(contentDir)) {
|
|
fs.mkdirSync(contentDir, { recursive: true });
|
|
}
|
|
|
|
const frontmatter = {
|
|
title: post.title.rendered,
|
|
date: post.date,
|
|
draft: post.status !== 'publish',
|
|
slug: slug,
|
|
wordpress_id: post.id,
|
|
excerpt: post.excerpt.rendered.replace(/<[^>]*>/g, ''),
|
|
featured_image: post._embedded?.['wp:featuredmedia']?.[0]?.source_url || '',
|
|
author: {
|
|
id: post.author,
|
|
name: post._embedded?.author?.[0]?.name || 'Unknown'
|
|
},
|
|
categories: post._embedded?.['wp:term']?.[0]?.map(cat => ({
|
|
id: cat.id,
|
|
name: cat.name,
|
|
slug: cat.slug
|
|
})) || [],
|
|
tags: post._embedded?.['wp:term']?.[1]?.map(tag => ({
|
|
id: tag.id,
|
|
name: tag.name,
|
|
slug: tag.slug
|
|
})) || [],
|
|
// section: categorySlug
|
|
};
|
|
|
|
const content = `---
|
|
${Object.entries(frontmatter)
|
|
.map(([key, value]) => `${key}: ${JSON.stringify(value)}`)
|
|
.join('\n')}
|
|
---
|
|
|
|
${post.content.rendered}`;
|
|
|
|
fs.writeFileSync(path.join(contentDir, 'index.md'), content);
|
|
});
|
|
|
|
console.log(`✅ Generated ${posts.length} content files`);
|
|
}
|
|
|
|
generateContent(); |