fix: 统一链接打开行为为新标签页打开
- 扩展ensureConfigDefaults函数处理所有页面站点数据 - 修复configJSON数据传递问题 - 确保所有站点默认设置external: true Closes #14
This commit is contained in:
@@ -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]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user