201 lines
7.4 KiB
Markdown
201 lines
7.4 KiB
Markdown
# 酷冰甲 · 降温服企业官网
|
||
|
||
> 参考 [sqy58.com](http://sqy58.com) 风格,主打 **降温服 / 冷却服定制**,采用原生 PHP MVC 架构,内置 **前后台**,后台可设置 **任意网页风格**(颜色 / 字体 / 圆角 / 容器 / 导航样式 / 明暗模式 / 自定义 CSS)。
|
||
|
||
---
|
||
|
||
## 一、特性
|
||
|
||
- **原生 PHP MVC**,零依赖、零 Composer,PHP 7.4+ 即可运行。
|
||
- **双存储引擎**:文件模式(JSON,开箱即用)与 MySQL 模式(生产环境),通过一处配置切换。
|
||
- **完整前后台**:
|
||
- 前台:首页 / 产品列表 / 产品详情 / 新闻列表 / 新闻详情 / 单页 / 联系我们(表单留资)。
|
||
- 后台:仪表盘 / 产品 / 分类 / 新闻 / 横幅 / 单页 / 站点设置 / **主题风格编辑器**。
|
||
- **后台任意网页风格**:6 套预设主题(海洋蓝 / 森野绿 / 极光紫 / 日落橙 / 极简黑金 / 冰晶青)一键套用,并支持自定义主色、辅助色、字体、圆角、容器宽度、导航样式、默认明暗模式与自定义 CSS,保存即生成 `theme.css`。
|
||
- **安全与体验**:CSRF 防护、会话登录、明暗模式切换(localStorage 记忆)、玻璃拟态导航、磁吸按钮、滚动渐显动画、响应式布局。
|
||
|
||
---
|
||
|
||
## 二、环境要求
|
||
|
||
| 项目 | 要求 |
|
||
| --- | --- |
|
||
| PHP | ≥ 7.4(需 `pdo_mysql` 扩展用于 MySQL 模式;文件模式无需数据库) |
|
||
| Web 服务器 | 内置 `php -S` 可直接演示;生产建议 Nginx / Apache |
|
||
| 数据库(可选) | MySQL 5.7+ / MariaDB(仅 `mysql` 模式需要) |
|
||
| 扩展 | `curl`、`mbstring`、`json`、`session`(通常默认开启) |
|
||
|
||
---
|
||
|
||
## 三、快速开始(文件模式,开箱即用)
|
||
|
||
```bash
|
||
# 1. 进入项目
|
||
cd /path/to/project
|
||
|
||
# 2. 初始化数据(写入 storage/data/*.json 并生成主题样式)
|
||
php install/install.php
|
||
|
||
# 3. 启动内置演示服务器
|
||
php -S 127.0.0.1:8000 -t public
|
||
```
|
||
|
||
浏览器访问:
|
||
|
||
- 前台首页:<http://127.0.0.1:8000/>
|
||
- 后台登录:<http://127.0.0.1:8000/admin>
|
||
|
||
**默认后台账号**:
|
||
|
||
- 用户名:`admin`
|
||
- 密码:`admin888`
|
||
|
||
> 首次部署后请务必修改后台密码(见 `config/config.php` 的 `admin` 段,或在后台扩展账号体系)。
|
||
|
||
---
|
||
|
||
## 四、后台:设置任意网页风格
|
||
|
||
进入 **后台 → 主题风格**,即可:
|
||
|
||
1. **一键套用预设**:选择 6 套内置配色方案之一,点击「套用预设」即时预览。
|
||
2. **精细化自定义**:
|
||
- 主色 / 主色深 / 辅助色 / 点缀色
|
||
- 背景 / 表面 / 文字 / 次要文字 / 边框 / 导航背景
|
||
- 字体、圆角(px)、容器宽度(px)
|
||
- 导航样式:`center` 居中 / `left` 左对齐 / `transparent` 透明
|
||
- 默认明暗模式:`light` / `dark`
|
||
- 自定义 CSS(可注入任意样式覆盖)
|
||
3. **保存即生效**:点击「保存主题」后,系统重新生成 `public/assets/css/theme.css`,全站立即应用新风格,无需改代码、无需重启。
|
||
|
||
主题变量通过 CSS 变量注入前台(`--c-primary` 等),所有组件均基于这些变量构建,因此换肤是全局、即时、可逆的。
|
||
|
||
---
|
||
|
||
## 五、切换为 MySQL(生产环境)
|
||
|
||
1. 在 MySQL 中创建数据库并执行建表脚本:
|
||
|
||
```bash
|
||
mysql -u root -p sqy_cooling < install/schema.sql
|
||
```
|
||
|
||
2. 修改 `config/config.php`:
|
||
|
||
```php
|
||
'driver' => 'mysql',
|
||
'db' => [
|
||
'mysql' => [
|
||
'host' => '127.0.0.1',
|
||
'port' => 3306,
|
||
'dbname' => 'sqy_cooling',
|
||
'user' => 'your_user',
|
||
'pass' => 'your_password',
|
||
'charset' => 'utf8mb4',
|
||
],
|
||
// ...
|
||
],
|
||
```
|
||
|
||
3. 执行安装脚本,将种子数据写入 MySQL:
|
||
|
||
```bash
|
||
php install/install.php
|
||
```
|
||
|
||
数据访问层(`app/Core/Model.php`)会根据 `driver` 自动在 JSON 文件与 MySQL 表之间切换,业务代码无需改动。
|
||
|
||
---
|
||
|
||
## 六、目录结构
|
||
|
||
```
|
||
.
|
||
├── app/
|
||
│ ├── Core/ # 框架核心:App(路由) / View / Controller / Model / Theme / Helper / Db
|
||
│ ├── Controllers/ # 前台控制器:Home / Product / News / Page / Contact
|
||
│ ├── Controllers/Admin/ # 后台控制器:Dashboard / Product / Category / News / Banner / Page / Setting / Auth
|
||
│ └── Models/ # 数据模型(Category / Product / News / Page / Banner / AdminUser / Setting)
|
||
├── config/
|
||
│ └── config.php # 全局配置(driver / 后台路径 / 数据库 / 管理员)
|
||
├── install/
|
||
│ ├── install.php # 安装/重置脚本(写种子数据 + 生成 theme.css)
|
||
│ ├── seed.php # 种子数据
|
||
│ └── schema.sql # MySQL 建表语句
|
||
├── public/ # Web 根目录(入口 index.php)
|
||
│ ├── index.php
|
||
│ └── assets/
|
||
│ ├── css/ site.css / admin.css / theme.css(自动生成)
|
||
│ └── js/ main.js / admin.js
|
||
├── storage/
|
||
│ └── data/ # 文件模式数据存储(*.json)
|
||
└── views/ # 视图模板(layouts / 前台 / 后台)
|
||
```
|
||
|
||
---
|
||
|
||
## 七、生产环境部署
|
||
|
||
### Nginx 示例
|
||
|
||
```nginx
|
||
server {
|
||
listen 80;
|
||
server_name your-domain.com;
|
||
root /path/to/project/public;
|
||
index index.php;
|
||
|
||
location / {
|
||
try_files $uri $uri/ /index.php?$query_string;
|
||
}
|
||
|
||
location ~ \.php$ {
|
||
fastcgi_pass 127.0.0.1:9000;
|
||
fastcgi_index index.php;
|
||
include fastcgi_params;
|
||
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||
}
|
||
|
||
location ~ /\.(?!well-known).* { deny all; }
|
||
}
|
||
```
|
||
|
||
### Apache 示例(`.htaccess` 置于 `public/`)
|
||
|
||
```apache
|
||
RewriteEngine On
|
||
RewriteCond %{REQUEST_FILENAME} !-f
|
||
RewriteCond %{REQUEST_FILENAME} !-d
|
||
RewriteRule ^ index.php [L]
|
||
```
|
||
|
||
> 部署要点:
|
||
> - Web 根目录必须指向 `public/`,避免暴露源码与 `storage/` 数据。
|
||
> - 确保 `storage/data/` 与 `public/assets/css/` 可写(用于文件模式与主题生成)。
|
||
> - 生产环境建议 `driver => 'mysql'`,并关闭 PHP 错误显示(`display_errors = Off`)。
|
||
|
||
---
|
||
|
||
## 八、数据备份与维护
|
||
|
||
- **文件模式**:直接备份 `storage/data/*.json` 即可。
|
||
- **MySQL 模式**:使用 `mysqldump` 定期备份数据库。
|
||
- **重置/重新初始化**:执行 `php install/install.php`(会覆盖现有数据,请先备份)。
|
||
- **重生成主题**:修改主题设置保存,或删除 `public/assets/css/theme.css` 后再次保存主题。
|
||
|
||
---
|
||
|
||
## 九、常见问题
|
||
|
||
**Q:后台登录后跳回登录页?**
|
||
A:确认 Cookie / Session 可写;文件模式无需数据库。检查 `php -S` 是否以 `public` 为根目录启动。
|
||
|
||
**Q:修改主题后页面没变化?**
|
||
A:清除浏览器缓存,确认 `public/assets/css/theme.css` 已更新;检查 `storage/data/settings.json` 中主题字段是否正确写入。
|
||
|
||
**Q:数据文件突然变成 0 字节?**
|
||
A:历史版本在写入含非法 UTF-8 字符时会触发 `json_encode` 失败并清空文件;当前版本已在 `Model::write()` 中修复(自动修正 UTF-8 且不会用失败结果覆盖文件)。如仍遇到,请检查输入是否为合法 UTF-8。
|
||
|
||
**Q:如何换域名 / 子目录部署?**
|
||
A:系统会自动根据 `DOCUMENT_ROOT` + `SCRIPT_FILENAME` 推导站点根路径,无需手动配置;若用反向代理请正确传递 `Host` 头。
|