Files
coolcoth.com/README.md
T
2026-08-08 16:26:31 +08:00

201 lines
7.4 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.
# 酷冰甲 · 降温服企业官网
> 参考 [sqy58.com](http://sqy58.com) 风格,主打 **降温服 / 冷却服定制**,采用原生 PHP MVC 架构,内置 **前后台**,后台可设置 **任意网页风格**(颜色 / 字体 / 圆角 / 容器 / 导航样式 / 明暗模式 / 自定义 CSS)。
---
## 一、特性
- **原生 PHP MVC**,零依赖、零 ComposerPHP 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` 头。