本文由 FlintHub 开发文档归档发布。原始文档日期见标题前缀,来源:WWW/plugins/user_profile/说明.md。
用户主页(user_profile)插件说明
版本:1.0.0 | 作者:SoSite | 状态:✅ 已启用
功能:查看其他用户的公开资料,包括个人资料、积分等级、发布的帖子和博客,支持关注/取关
一、功能简介
- 公开主页:
/u/{id}展示用户公开资料(个人资料/积分等级徽章/发布的帖子/发布的博客) - 关注系统:登录用户可关注/取关其他用户(
user_follows表) - 主页数据聚合:用户信息 + 帖子列表 + 博客列表 + 关注状态
- 覆盖默认
/u/{id}用户页(原有简单页被插件增强版替换)
二、目录结构
plugins/user_profile/
├── plugin.json # 插件清单(hooks: init_after / route_register / admin_route_register / admin_sidebar_links / nav_plugin_links)
├── Plugin.php # 生命周期(activate 建表 / 关注/取关/状态查询辅助)
├── FrontController.php # 前台控制器(show / follow / unfollow / handleCsrf)
├── hook/
│ ├── init_after.php # 懒建表(user_follows)
│ ├── route_register.php # 前台路由(/u/{id} /u/{id}/follow /u/{id}/unfollow)
│ ├── admin_route_register.php # 后台路由
│ ├── admin_sidebar_links.php # 后台侧边栏入口
│ └── nav_plugin_links.php # 导航入口
├── assets/style.css # 用户主页样式
└── views/front.php # 用户主页视图(A+ 规则:视图在插件目录)三、数据表
| 表 | 用途 |
|---|---|
user_follows | 关注关系(follower_id / followed_id / created_at) |
- 建表:
activate()+init_after懒建(幂等 CREATE TABLE IF NOT EXISTS) - 卸载:
uninstall()删除表
四、Hooks
| Hook | 用途 |
|---|---|
init_after | 懒建表(user_follows) |
route_register | 前台路由(/u/{id} 系列) |
admin_route_register | 后台路由 |
admin_sidebar_links | 后台侧边栏入口 |
nav_plugin_links | 导航入口 |
五、路由
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /u/{id} | 用户公开主页(资料/等级/帖子/博客/关注状态) |
| POST | /u/{id}/follow | 关注(CSRF) |
| POST | /u/{id}/unfollow | 取关(CSRF) |
六、核心逻辑
public function show($id) // 聚合用户资料 + 帖子 + 博客 + 关注状态 → 渲染 front 视图
public function follow($id) // 关注(幂等:已关注不重复)
public function unfollow($id) // 取关
public function handleCsrf() // CSRF 校验辅助七、注意事项
- 用户不存在时渲染
errors/404页 - 关注/取关操作 POST + CSRF 校验,防越权(只能关注他人,不能操作自己)
- 主页视图在
plugins/user_profile/views/front.php(A+ 规则),app/Views/plugins/已移除 - 卸载删表会清空全部关注关系数据,请谨慎