fix: 统一链接打开行为为新标签页打开

- 扩展ensureConfigDefaults函数处理所有页面站点数据
- 修复configJSON数据传递问题
- 确保所有站点默认设置external: true

Closes #14
This commit is contained in:
coolzr
2025-07-30 00:57:43 +08:00
parent 217324f743
commit 391be05a08

View File

@@ -304,20 +304,33 @@ function ensureConfigDefaults(config) {
result.profile.subtitle = result.profile.subtitle || 'MeNav个人导航系统'; result.profile.subtitle = result.profile.subtitle || 'MeNav个人导航系统';
result.profile.description = result.profile.description || '简单易用的个人导航站点'; result.profile.description = result.profile.description || '简单易用的个人导航站点';
// 为每个类别和站点设置默认值 // 处理站点默认值的辅助函数
result.categories = result.categories || []; function processSiteDefaults(site) {
result.categories.forEach(category => { 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.name = category.name || '未命名分类';
category.sites = category.sites || []; category.sites = category.sites || [];
category.sites.forEach(processSiteDefaults);
}
// 为每个站点设置默认值 // 为首页的每个类别和站点设置默认值
category.sites.forEach(site => { result.categories = result.categories || [];
site.name = site.name || '未命名站点'; result.categories.forEach(processCategoryDefaults);
site.url = site.url || '#';
site.description = site.description || ''; // 为所有页面配置中的类别和站点设置默认值
site.icon = site.icon || 'fas fa-link'; Object.keys(result).forEach(key => {
site.external = typeof site.external === 'boolean' ? site.external : true; const pageConfig = result[key];
}); // 检查是否是页面配置对象且包含categories数组
if (pageConfig && typeof pageConfig === 'object' && Array.isArray(pageConfig.categories)) {
pageConfig.categories.forEach(processCategoryDefaults);
}
}); });
return result; return result;
@@ -406,7 +419,7 @@ function prepareRenderData(config) {
renderData.configJSON = JSON.stringify({ renderData.configJSON = JSON.stringify({
version: process.env.npm_package_version || '1.0.0', version: process.env.npm_package_version || '1.0.0',
timestamp: new Date().toISOString(), timestamp: new Date().toISOString(),
data: config data: renderData // 使用经过处理的renderData而不是原始config
}); });
// 添加导航项的活动状态标记和子菜单 // 添加导航项的活动状态标记和子菜单
@@ -741,6 +754,7 @@ function renderPage(pageId, config) {
// 页面特定的额外数据 // 页面特定的额外数据
if (config[pageId]) { if (config[pageId]) {
// 使用已经经过ensureConfigDefaults处理的配置数据
Object.assign(data, config[pageId]); Object.assign(data, config[pageId]);
} }