Files
2026-08-08 16:26:31 +08:00

7.4 KiB
Raw Permalink Blame History

酷冰甲 · 降温服企业官网

参考 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 模式需要)
扩展 curlmbstringjsonsession(通常默认开启)

三、快速开始(文件模式,开箱即用)

# 1. 进入项目
cd /path/to/project

# 2. 初始化数据(写入 storage/data/*.json 并生成主题样式)
php install/install.php

# 3. 启动内置演示服务器
php -S 127.0.0.1:8000 -t public

浏览器访问:

默认后台账号

  • 用户名:admin
  • 密码:admin888

首次部署后请务必修改后台密码(见 config/config.phpadmin 段,或在后台扩展账号体系)。


四、后台:设置任意网页风格

进入 后台 → 主题风格,即可:

  1. 一键套用预设:选择 6 套内置配色方案之一,点击「套用预设」即时预览。
  2. 精细化自定义
    • 主色 / 主色深 / 辅助色 / 点缀色
    • 背景 / 表面 / 文字 / 次要文字 / 边框 / 导航背景
    • 字体、圆角(px)、容器宽度(px
    • 导航样式:center 居中 / left 左对齐 / transparent 透明
    • 默认明暗模式:light / dark
    • 自定义 CSS(可注入任意样式覆盖)
  3. 保存即生效:点击「保存主题」后,系统重新生成 public/assets/css/theme.css,全站立即应用新风格,无需改代码、无需重启。

主题变量通过 CSS 变量注入前台(--c-primary 等),所有组件均基于这些变量构建,因此换肤是全局、即时、可逆的。


五、切换为 MySQL(生产环境)

  1. 在 MySQL 中创建数据库并执行建表脚本:

    mysql -u root -p sqy_cooling < install/schema.sql
    
  2. 修改 config/config.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:

    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 示例

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/

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 头。