feat: add navigation links management and user registration

Features:
- Custom navigation links management in admin settings
- Multi-language support for navigation links (Chinese/English)
- Control link behavior (open in new window)
- Sort order and enable/disable toggle for nav links
- User registration system with validation
- Admin can enable/disable user registration
- Registration form with username, display name, email, password
- Link to registration from login page

Navigation Links:
- Admin interface to add/edit/delete custom nav links
- Support for both internal and external URLs
- Display links in header navigation bar
- Respects language preference

User Registration:
- Username validation (3-32 characters, alphanumeric + underscore/dash)
- Password validation (minimum 6 characters)
- Password confirmation matching
- Optional display name and email fields
- Can be toggled on/off by admin in site settings

Templates:
- Added navigation links settings page
- Added user registration page
- Updated login page with registration link
- Updated base layout to render custom nav links

Documentation:
- NAV_LINKS_FEATURE.md - Navigation links feature documentation
- REGISTRATION_FEATURE.md - User registration documentation
- IMPLEMENTATION_SUMMARY.md - Overall implementation summary

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 21:01:38 +08:00
co-authored by Claude Fable 5
parent 2bdc368399
commit d9bb91af00
18 changed files with 1224 additions and 15 deletions
+145
View File
@@ -0,0 +1,145 @@
# 导航链接管理功能
## 功能概述
顶部导航链接管理功能允许管理员在网站顶部导航栏中添加自定义链接,支持中英文双语显示和新窗口打开设置。
## 功能特性
- ✅ 添加自定义导航链接
- ✅ 中英文双语支持(自动根据用户语言显示)
- ✅ 控制是否在新窗口打开链接
- ✅ 启用/禁用链接显示
- ✅ 自定义链接排序
- ✅ 编辑现有链接
- ✅ 删除链接
- ✅ 配置缓存,高性能访问
## 使用方法
### 访问管理页面
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. 删除操作不可恢复,请谨慎操作