Files
YwxAppThink/addon/blog/READMD.md
T

325 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ThinkPHP 8 博客应用 - 说明文档与应用目录
## 一、说明文档
### 1. 项目概述
**项目名称**TP-Blog(基于ThinkPHP 8的现代化博客系统)
**项目定位**:轻量级、可扩展的博客平台,支持用户管理、文章发布、分类标签、评论互动、后台管理等核心功能,适合个人博客或小型社区使用。
**技术栈**
- 后端:ThinkPHP 8PHP 8.0+
- 前端:Layui 2.6+、HTML5、CSS3、JavaScript
- 数据库:MySQL 5.7+(支持MariaDB 10.3+
- 缓存:Redis(可选,用于提升性能)
- 富文本编辑器:WangEditor
- 其他:QRCode(分享功能)、ECharts(统计图表,可选)
### 2. 功能模块
#### 2.1 前台功能
- **用户系统**:注册、登录、退出、个人资料管理
- **文章系统**:文章列表(分页/排序)、文章详情(含点赞/收藏/分享)、文章搜索
- **分类标签**:按分类/标签筛选文章、分类/标签云展示
- **互动功能**:评论(多级回复)、点赞、收藏、文章分享(二维码/链接)
- **其他**:RSS订阅、访客统计(PV/UV)
#### 2.2 后台功能
- **仪表盘**:数据统计(文章/用户/评论/访问量)、最新动态、热门文章
- **内容管理**:文章发布/编辑/删除、分类/标签管理、评论审核/删除
- **用户管理**:用户列表、添加/编辑/删除用户、角色权限(admin/editor/user
- **统计分析**:访客记录、热门页面、访问趋势(需集成ECharts)
- **系统设置**:站点信息、SEO配置、邮件设置、权限管理
### 3. 技术架构
#### 3.1 架构图
```mermaid
graph TD
A[前端] --> B[ThinkPHP 8]
B --> C[MySQL]
B --> D[Redis缓存]
B --> E[文件存储]
subgraph 前端技术栈
A1[Layui 2.6+]
A2[HTML5/CSS3]
A3[JavaScript]
A4[WangEditor]
end
subgraph 后端技术栈
B1[ThinkPHP 8 MVC]
B2[Blade模板引擎]
B3[RESTful API]
B4[中间件]
end
subgraph 数据存储
C1[用户表(tp_user)]
C2[文章表(tp_article)]
C3[分类表(tp_category)]
C4[标签表(tp_tag)]
C5[评论表(tp_comment)]
C6[点赞/收藏表(tp_like/tp_favorite)]
C7[访客表(tp_visit)]
end
```
#### 3.2 核心技术点
- **MVC分层**:控制器(Controller)、模型(Model)、视图(View)分离
- **模型关联**:一对一(用户-文章)、一对多(文章-评论)、多对多(文章-标签)
- **中间件**:用户认证(`Auth`)、访客统计(`Visit`)、管理员权限(`AdminAuth`
- **富文本编辑**:集成WangEditor,支持图片上传、代码高亮
- **权限控制**:基于角色的访问控制(RBAC),区分普通用户/管理员
### 4. 安装部署
#### 4.1 环境准备
- **服务器**Linux(推荐CentOS/Ubuntu)或Windows
- **运行环境**
- PHP 8.0+(需开启`fileinfo``redis`扩展)
- Composer 2.0+
- MySQL 5.7+ 或 MariaDB 10.3+
- Nginx 1.18+ 或 Apache 2.4+
- Redis 6.0+(可选,用于缓存)
- **工具**:Git(代码拉取)、Xshell(远程连接)、FileZilla(文件传输)
#### 4.2 安装步骤
##### 4.2.1 本地开发环境
```bash
# 1. 克隆代码
git clone https://github.com/yourname/tp-blog.git
cd tp-blog
# 2. 安装依赖
composer install
# 3. 配置环境
cp .env.example .env
php think key:generate # 生成应用密钥
# 4. 创建数据库(导入SQL文件)
mysql -u root -p
CREATE DATABASE IF NOT EXISTS `tp_blog` DEFAULT CHARACTER SET utf8mb4;
USE `tp_blog`;
source database/tp_blog.sql; # 导入数据库表结构
# 5. 配置.env文件
DB_HOST=127.0.0.1
DB_NAME=tp_blog
DB_USER=root
DB_PASS=your_mysql_password
APP_DEBUG=true # 开发环境开启调试
# 6. 启动服务
php think run # 访问 http://localhost:8000
```
##### 4.2.2 生产环境部署(Nginx
```bash
# 1. 上传代码到服务器
scp -r tp-blog root@your_server_ip:/var/www/
# 2. 安装依赖(生产环境关闭dev依赖)
composer install --no-dev
# 3. 配置Nginx
server {
listen 80;
server_name yourdomain.com;
root /var/www/tp-blog/public;
index index.php;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
}
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 静态资源缓存
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 365d;
add_header Cache-Control "public, no-transform";
}
}
# 4. 设置文件权限
chown -R www-data:www-data /var/www/tp-blog
chmod -R 755 /var/www/tp-blog/storage
# 5. 重启服务
systemctl restart nginx
systemctl restart php8.0-fpm
```
#### 4.3 配置说明
- **数据库配置**:修改`.env`文件中的`DATABASE`部分
- **缓存配置**:开启Redis缓存(`.env``CACHE_TYPE=redis`,配置Redis连接)
- **站点信息**:修改`config/site.php`中的站点名称、描述、URL等
- **邮件配置**:配置SMTP信息(用于用户注册验证、找回密码)
### 5. 使用说明
#### 5.1 前台使用
- **首页**:展示最新文章、热门文章、分类/标签云
- **文章详情**:阅读全文、发表评论、点赞/收藏、分享
- **分类/标签**:点击分类/标签查看相关文章列表
- **搜索**:输入关键词搜索文章标题/内容
- **用户中心**:登录后查看个人资料、我的文章、我的收藏
#### 5.2 后台使用
- **登录**:访问`/admin`,使用管理员账号(默认`admin/admin123`
- **仪表盘**:查看数据概览、最新文章/评论、热门文章
- **内容管理**
- 文章:发布/编辑(支持Markdown/WangEditor)、删除、置顶
- 分类/标签:添加/编辑/删除,排序分类权重
- 评论:审核(通过/拒绝)、删除、批量操作
- **用户管理**:添加/编辑用户、分配角色(管理员/编辑/普通用户)
- **统计分析**:查看访客记录、热门页面、访问趋势图表
### 6. 数据库设计
详见前文《数据库表结构整理》,包含10张核心表(用户、文章、分类、标签、评论、点赞、收藏、访客等),支持完整的博客功能和数据关联。
### 7. API接口(核心)
| 接口路径 | 方法 | 参数 | 说明 |
|------------------------|------|-------------------------------|--------------------------|
| `/login` | POST | username, password | 用户登录 |
| `/register` | POST | username, password, email | 用户注册 |
| `/article/save` | POST | title, content, category_id | 发布文章 |
| `/comment/add` | POST | article_id, content, parent_id | 发表评论 |
| `/interaction/like/:id` | POST | - | 点赞/取消点赞文章 |
| `/interaction/favorite/:id` | POST | - | 收藏/取消收藏文章 |
| `/admin/comment/approve/:id` | POST | - | 审核评论(后台) |
### 8. 常见问题
#### 8.1 安装问题
- **Composer安装慢**:配置国内镜像 `composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/`
- **数据库连接失败**:检查`.env`文件中的数据库账号密码是否正确,MySQL是否允许远程连接
#### 8.2 功能问题
- **评论不显示**:检查评论状态是否为“已通过”(`status=1`),评论是否需要审核
- **图片上传失败**:确认`public/upload`目录权限(755),PHP配置`upload_max_filesize`是否足够
#### 8.3 性能问题
- **页面加载慢**:开启Redis缓存(热点数据缓存),压缩静态资源(CSS/JS合并压缩)
### 9. 附录
- **参考文档**
- https://www.kancloud.cn/manual/thinkphp8_0
- https://layui.dev/
- https://www.wangeditor.com/
- **鸣谢**:感谢开源社区提供的框架和工具支持
## 二、应用目录结构
### 完整目录树
```
blog/ # 应用目录(核心代码)
├─ controller/ # 控制器目录
│ ├─ Admin/ # 后台控制器
│ │ ├─ Dashboard.php # 仪表盘控制器
│ │ ├─ Article.php # 文章管理控制器
│ │ ├─ Category.php # 分类管理控制器
│ │ ├─ Tag.php # 标签管理控制器
│ │ ├─ Comment.php # 评论管理控制器
│ │ ├─ User.php # 用户管理控制器
│ │ ├─ Stat.php # 统计分析控制器
│ │ └─ Setting.php # 系统设置控制器
│ ├─ Auth.php # 认证控制器(登录/注册/退出)
│ ├─ Articler.php # 前台文章控制器(详情/列表)
│ ├─ Comment.php # 前台评论控制器(发表/删除)
│ ├─ Interaction.php # 互动控制器(点赞/收藏)
│ ├─ Index.php # 前台首页控制器
│ └─ Rss.php # RSS订阅控制器
├─ model/ # 模型目录(数据库映射)
│ ├─ User.php # 用户模型
│ ├─ BlogArticle.php # 文章模型
│ ├─ BlogCategory.php # 分类模型
│ ├─ BlogTag.php # 标签模型
│ ├─ BlogComment.php # 评论模型
│ ├─ BlogLike.php # 点赞模型
│ ├─ BlogFavorite.php # 收藏模型
│ └─ BlogVisit.php # 访客模型
├─ view/ # 视图目录(模板文件)
│ ├─ admin/ # 后台视图
│ │ ├─ dashboard/ # 仪表盘视图
│ │ ├─ article/ # 文章管理视图
│ │ ├─ category/ # 分类管理视图
│ │ ├─ tag/ # 标签管理视图
│ │ ├─ comment/ # 评论管理视图
│ │ ├─ user/ # 用户管理视图
│ │ ├─ stat/ # 统计分析视图
│ │ ├─ setting/ # 系统设置视图
│ │ └─ layout/ # 后台布局模板
│ ├─ auth/ # 认证视图(登录/注册)
│ ├─ index/ # 前台视图
│ │ ├─ article/ # 文章详情/列表视图
│ │ ├─ category/ # 分类文章列表视图
│ │ ├─ tag/ # 标签文章列表视图
│ │ ├─ search/ # 搜索结果视图
│ │ ├─ _comment.html # 评论组件视图
│ │ └─ _sidebar.html # 侧边栏组件视图
│ └─ layout/ # 前台布局模板(base.html
├─ middleware/ # 中间件目录
│ │ ├─ Auth.php # 用户认证中间件
│ │ ├─ AdminAuth.php # 管理员权限中间件
│ │ └─ Visit.php # 访客统计中间件
└─ service/ # 服务层(可选,封装业务逻辑)
│ ├─ UserService.php # 用户服务
│ └─ ArticleService.php # 文章服务
├─ config/ # 配置文件目录
│ ├─ app.php # 应用配置(调试模式、时区等)
│ ├─ database.php # 数据库配置
│ ├─ cache.php # 缓存配置(Redis
│ ├─ route.php # 路由配置(可选)
│ └─ site.php # 站点信息配置(名称、描述等)
├─ public/ # 公共资源目录(Web根目录)
│ ├─ static/ # 静态资源
│ │ ├─ layui/ # Layui框架文件
│ │ ├─ wangEditor/ # 富文本编辑器
│ │ ├─ css/ # 自定义CSS
│ │ │ ├─ main.css # 前台样式
│ │ │ └─ admin.css # 后台样式
│ │ ├─ js/ # 自定义JS
│ │ │ ├─ main.js # 前台脚本
│ │ │ └─ admin.js # 后台脚本
│ │ └─ images/ # 图片资源(头像、默认封面等)
│ ├─ upload/ # 上传文件目录(图片、附件)
│ ├─ index.php # 入口文件(单应用模式)
│ └─ router.php # 路由入口(可选)
├─ route/ # 路由目录
│ ├─ app.php # 路由定义(分组路由、资源路由)
│ └─ api.php # API路由(可选)
├─ database/ # 数据库相关
│ ├─ migrations/ # 数据库迁移文件(可选)
│ ├─ seeds/ # 数据填充文件(可选)
│ └─ tp_blog.sql # 数据库表结构SQL文件
```
### 核心目录说明
- **app/controller**:存放所有控制器,按前台/后台分组,处理HTTP请求和业务逻辑分发
- **app/model**:模型类,映射数据库表,封装数据操作(关联查询、数据验证等)
- **app/view**:模板文件,使用Layui组件构建界面,支持模板继承和组件复用
- **public/static**:静态资源集中存放,便于Nginx配置缓存策略
- **route/app.php**:路由定义文件,配置URL与控制器方法的映射关系
- **storage**:运行时生成的文件(日志、缓存),需确保写入权限
以上文档和目录结构覆盖了项目的全生命周期,可作为开发、部署和维护的参考手册。如需扩展功能(如第三方登录、Markdown支持),可在对应目录下新增模块。