# 导航链接管理功能 ## 功能概述 顶部导航链接管理功能允许管理员在网站顶部导航栏中添加自定义链接,支持中英文双语显示和新窗口打开设置。 ## 功能特性 - ✅ 添加自定义导航链接 - ✅ 中英文双语支持(自动根据用户语言显示) - ✅ 控制是否在新窗口打开链接 - ✅ 启用/禁用链接显示 - ✅ 自定义链接排序 - ✅ 编辑现有链接 - ✅ 删除链接 - ✅ 配置缓存,高性能访问 ## 使用方法 ### 访问管理页面 1. 登录管理后台 2. 访问 `/admin/settings/navlinks` 或点击"平台设置"进入设置页面 3. 选择"导航链接"标签 ### 添加新链接 在"添加链接"表单中填写以下信息: - **链接文字(中文)**: 在中文界面显示的文本,如"关于" - **链接文字(英文)**: 在英文界面显示的文本,如"About" - **链接地址**: 目标URL,可以是: - 相对路径:`/about` - 完整URL:`https://example.com` - **在新窗口打开**: 勾选此选项将在新标签页打开链接 - **启用**: 控制链接是否显示在导航栏 - **排序**: 数字越小,显示越靠前(默认:0) 点击"添加链接"按钮保存。 ### 编辑链接 1. 在链接列表中找到要编辑的链接 2. 点击"编辑"按钮 3. 在弹出的对话框中修改信息 4. 点击"保存" ### 启用/禁用链接 点击链接右侧的"✓ 切换"或"✗ 切换"按钮,快速启用或禁用链接显示。 ### 删除链接 点击"删除"按钮,确认后即可删除链接。 ## 技术实现 ### 数据库模型 ```go type NavLink struct { ID uint // 主键 TitleZh string // 链接文字(中文) TitleEn string // 链接文字(英文) URL string // 目标地址 OpenNew bool // 是否新窗口打开 Enabled bool // 是否启用 Sort int // 排序(数字越小越靠前) CreatedAt time.Time UpdatedAt time.Time UpdatedBy uint // 更新者用户ID } ``` ### 配置缓存 导航链接数据在应用启动时加载到内存缓存中,每次修改后自动刷新缓存。这确保了: - 每个请求无需查询数据库 - 高性能的页面渲染 - 配置更改立即生效 ### 安全特性 - 新窗口打开的链接自动添加 `rel="noopener noreferrer"` 属性,防止安全漏洞 - 仅管理员可以访问管理页面 - 输入验证确保数据完整性 ## 前端展示 导航链接显示在网站顶部导航栏,位于"主页"链接之后: - 根据用户选择的语言显示对应的链接文字 - 设置为"新窗口打开"的链接会显示一个小图标 ↗ - 仅显示已启用的链接 - 按照排序字段从小到大排列 ## API端点 - `GET /admin/settings/navlinks` - 导航链接管理页面 - `POST /admin/settings/navlinks` - 处理导航链接操作 - `action=add` - 添加新链接 - `action=edit` - 编辑链接 - `action=toggle` - 切换启用状态 - `action=delete` - 删除链接 ## 示例 ### 添加"关于"页面链接 - 链接文字(中文):关于我们 - 链接文字(英文):About Us - 链接地址:/about - 在新窗口打开:否 - 启用:是 - 排序:10 ### 添加外部链接 - 链接文字(中文):GitHub - 链接文字(英文):GitHub - 链接地址:https://github.com/yourname - 在新窗口打开:是 - 启用:是 - 排序:20 ## 多语言支持 该功能完全支持中英文双语: **中文翻译键:** - `settings_navlinks_title`: "导航链接" - `navlinks_add`: "添加链接" - `navlinks_title_zh`: "链接文字(中文)" - `navlinks_title_en`: "链接文字(英文)" - `navlinks_url`: "链接地址" - `navlinks_open_new`: "在新窗口打开" - 等等... ## 注意事项 1. 至少需要填写中文或英文链接文字中的一个 2. 链接地址必填 3. 排序值相同时,按ID升序排列 4. 禁用的链接不会显示在前端,但保留在数据库中 5. 删除操作不可恢复,请谨慎操作