From 391be05a08e89bc9904fefaea0cd1c819e0d2fb2 Mon Sep 17 00:00:00 2001 From: coolzr <108077543+rbetree@users.noreply.github.com> Date: Wed, 30 Jul 2025 00:57:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=BB=9F=E4=B8=80=E9=93=BE=E6=8E=A5?= =?UTF-8?q?=E6=89=93=E5=BC=80=E8=A1=8C=E4=B8=BA=E4=B8=BA=E6=96=B0=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E9=A1=B5=E6=89=93=E5=BC=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 扩展ensureConfigDefaults函数处理所有页面站点数据 - 修复configJSON数据传递问题 - 确保所有站点默认设置external: true Closes #14 --- src/generator.js | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/generator.js b/src/generator.js index df023cd..66c89bb 100644 --- a/src/generator.js +++ b/src/generator.js @@ -304,20 +304,33 @@ function ensureConfigDefaults(config) { result.profile.subtitle = result.profile.subtitle || 'MeNav个人导航系统'; result.profile.description = result.profile.description || '简单易用的个人导航站点'; - // 为每个类别和站点设置默认值 - result.categories = result.categories || []; - result.categories.forEach(category => { + // 处理站点默认值的辅助函数 + function processSiteDefaults(site) { + site.name = site.name || '未命名站点'; + site.url = site.url || '#'; + site.description = site.description || ''; + site.icon = site.icon || 'fas fa-link'; + site.external = typeof site.external === 'boolean' ? site.external : true; + } + + // 处理分类默认值的辅助函数 + function processCategoryDefaults(category) { category.name = category.name || '未命名分类'; category.sites = category.sites || []; + category.sites.forEach(processSiteDefaults); + } - // 为每个站点设置默认值 - category.sites.forEach(site => { - site.name = site.name || '未命名站点'; - site.url = site.url || '#'; - site.description = site.description || ''; - site.icon = site.icon || 'fas fa-link'; - site.external = typeof site.external === 'boolean' ? site.external : true; - }); + // 为首页的每个类别和站点设置默认值 + result.categories = result.categories || []; + result.categories.forEach(processCategoryDefaults); + + // 为所有页面配置中的类别和站点设置默认值 + Object.keys(result).forEach(key => { + const pageConfig = result[key]; + // 检查是否是页面配置对象且包含categories数组 + if (pageConfig && typeof pageConfig === 'object' && Array.isArray(pageConfig.categories)) { + pageConfig.categories.forEach(processCategoryDefaults); + } }); return result; @@ -406,7 +419,7 @@ function prepareRenderData(config) { renderData.configJSON = JSON.stringify({ version: process.env.npm_package_version || '1.0.0', timestamp: new Date().toISOString(), - data: config + data: renderData // 使用经过处理的renderData而不是原始config }); // 添加导航项的活动状态标记和子菜单 @@ -741,6 +754,7 @@ function renderPage(pageId, config) { // 页面特定的额外数据 if (config[pageId]) { + // 使用已经经过ensureConfigDefaults处理的配置数据 Object.assign(data, config[pageId]); }