壁纸库与检索
分类、标签、横竖屏、设备、分辨率、主色、关键词多维筛选;最新 / 热门 / 下载 / 收藏 / 评分 / 随机六种排序,全部走同一套查询构造器。?sort=hot&device=phone&orientation=2
FEATURES
不是把老站代码剪一刀留下的残骸,而是按壁纸业务重新设计的完整闭环。
分类、标签、横竖屏、设备、分辨率、主色、关键词多维筛选;最新 / 热门 / 下载 / 收藏 / 评分 / 随机六种排序,全部走同一套查询构造器。?sort=hot&device=phone&orientation=2
入库时探测宽高、体积、横竖屏;GD 可用则按比例生成缩略图,不可用直接复用原图,不报错不白屏。列表页占位底色取图片平均主色。Image::makeThumb($url, 640)
按日期稳定挑选一张,同一模板每天固定、隔天自动更换。开放 JSON 接口给 App、小程序或自己的桌面脚本调用。GET /api/daily
登录用户可收藏、取消收藏,并自建多个收藏夹分组存放;列表页一次性批量判定收藏状态,不会为每张图发一条查询。Favorite::mapFor($uid, $ids)
浏览历史自动记录、可一键清空;下载行为计数并留档,用户中心能看到「我下过什么」,后台能看到「什么最好下」。
后台开关控制是否开放会员上传。会员上传的图片自动压缩缩略图、自动识别元数据,归属到「我的上传」,管理员可审可删。
浏览榜、下载榜、收藏榜三张榜单,前 50 名直接给模板渲染,不做重复计算。
后台粘贴一行一条 标题|图片地址|分类|标签 即可批量导入;可选把远程图抓到本地,分类不存在时自动创建。已加内网地址拦截。
全站 PDO 参数绑定、表单 CSRF 校验、输出统一转义、密码 bcrypt 存储、后台操作留痕,图片地址只允许 http/https 与站内路径。
THEME ENGINE
模板是纯 HTML 结构 + 少量输出语句,每个模板一个独立文件夹,互相不打架。
取数全部在 app/Model/ 里完成,模板只是把变量排成不同样子。
列表卡片统一用 cards($items) 输出,换模板不用重写 views、thumb 这些字段。
当前模板找不到 detail.php 时自动回落到基底模板的同名文件。
改一个配置项立即生效,还能分别指定电脑端与手机端模板。
管理员用 ?tpl=xxx 临时试看,会话级生效,不动线上设置。
后台模板固定在 templates/_admin/,无论前台怎么换皮都不会把自己切没。
templates/
├─ tpl-orange/ # 暖阳橙(基底,28 个文件:19 张页面 + 5 个片段 + 资源与元信息)
│ ├─ theme.json layout.php
│ ├─ home.php list.php detail.php page.php ranking.php 404.php
│ ├─ auth-login.php auth-register.php
│ ├─ user-home.php user-favorites.php user-points.php …(用户中心 10 页)
│ ├─ partial/ card.php wall-grid.php mini-row.php pager.php usermenu.php
│ └─ assets/ style.css app.js preview.png
└─ _admin/ # 后台外壳,固定,不随前台切换
# 新模板:新建 templates/tpl-mine/,放 theme.json + layout.php + 首页/列表/详情,
# 其余页面自动回落基底模板,后台「模板切换」扫描目录就能看到这张卡片。templates/ 就能切;后台删掉的模板也能从同一处重新下回来。没有现成的就把配色方向发给作者谈定制。GALLERY
解压即用的前端模板是 tpl-orange(暖阳橙),28 个文件把首页、列表、详情、单页、榜单、登录注册和 10 张用户中心页面全覆盖了,对外地址 /tpl/模板名/assets/… 由入口程序代发,改样式带文件指纹,浏览器不会卡在旧缓存上。下面这些配色方向是给你抄的示例:复制 tpl-orange 改一份 theme.json 与 CSS 变量,后台扫描到就出现在模板列表里。也可以直接找作者定制,或者在模板商店看看有没有现成的。
tpl-orange 一套。想省事就把方向发给作者谈定制,想自己动手看 模板实战教程,三张页面就能起一套新皮肤。MEMBER
壁纸的每一个动作都会落进用户中心,反过来用户中心也直接连着壁纸。
聚合收藏、足迹、上传、口味标签与未读消息,一次进后台看全。
收藏按收藏夹分组,可新建、改名、删除、移动;默认收藏夹不可删。
自动记录去重,每人上限 500 条,支持一键清空。
区分游客与会员,会员可以在「下载记录」里找回之前下过的图。
改昵称、简介、邮箱、头像(本地上传或外链),以及改密码。
详情页的收藏按钮、列表页的红心状态、个人中心三者同步。
游客可浏览与下载;收藏、足迹、投稿需登录,未登录点收藏会被带回原页面再登录。
全站公告或指定用户通知,用户中心消息中心即时可见。
ADMIN
不做「什么都能配」的空壳,每个模块都给到能干活。
TECH
| 项目 | 说明 |
|---|---|
| 运行环境 | PHP 7.4+(不使用 PHP 8 独有语法)· MySQL 5.6+(全 InnoDB,utf8mb4)· 扩展 PDO + pdo_mysql,GD 可选 |
| 依赖 | 无 Composer、无框架、无前端构建 |
| 代码结构 | app/Core 数据库、路由、模板、鉴权、设置 · app/Model 壁纸、分类、收藏、用户、统计 · app/Controllers Front / Admin 分离 · app/Support 全局函数、图片、UI 组件 |
| 数据层 | 单文件 PDO 双驱动,MySQL / SQLite 自动切换;SQL 内 {{tbl_xxx}} 自动替换表前缀;重复命名占位符自动展开(5.6 原生预处理友好);随机排序、LIKE 转义按驱动分别处理 |
| 目录设计 | 站点根目录只指向 public/,业务代码在 app/ Web 不可直接访问;storage/ 放会话、日志、编译缓存;上传与缩略图落 public/uploads/ |
| URL | /c/nature 分类 · /w/123 详情 · /tag/极简 标签 · /ranking 榜单 · /user/* 用户中心 · /admin/* 后台 · /tpl/主题/文件 模板静态资源安全输出 |
| 可扩展点 | 模型静态方法即公共函数库,模板直接调用;片段 part('card') 支持主题内覆盖;设置项存表后台改了立即生效;每日接口可直接被第三方复用 |
| 演示数据 | laoli_wallpapers.sql 76,402 张壁纸 + laoli_categories.sql 分类表,导入即成站 |
INSTALL
全程不改任何文件。没 SSH 权限也能装。
把整个程序目录传到服务器,网站根目录就指向它(改不了目录的虚拟主机也一样能跑)。根目录按服务器各放了一份伪静态文件,只用其中一个:.htaccess(Apache)、nginx.htaccess(Nginx / 宝塔,include 在 server{ } 层级,phpStudy 用户要把那行 include 从 location / 里移到外面)、web.config(IIS)。
没装过时,用浏览器打开域名首页就是这个安装器(/install 也能进):填数据库账号密码、站点名、管理员密码,点一下就完成。环境自检先跑,库不存在会自动建,建表、写初始设置、创建管理员、生成默认分类、15 张演示壁纸一次做完。
打开 /admin/login 登录,第一件事是改密码,然后进「模板切换」看主题列表(前台模板全部在 templates/ 目录里扫描,可按电脑端 / 手机端分别指定,还能设基底模板与前台预览)。装完顺手把根目录的 install/ 删掉更稳妥。
php install/cli.php
php install/cli.php --demo --admin-user=laoli --admin-pass=改成强密码
php install/cli.php --bizhi=laoli_wallpapers.sql # 只重建壁纸表# 面板生成的 PHP 段是正则 location,优先级高于 location /,
# 只粘伪静态的话 /config/config.php 这类文件仍会被解析执行。
location ~ \.php(.*)$ {
if ($request_filename !~* /public/index\.php$) { return 404; }
fastcgi_pass 127.0.0.1:9001;
# 其余原样保留
}laoli_categories.sql(分类表)和 laoli_wallpapers.sql(76,402 张壁纸),在 phpMyAdmin 里直接导入就行,文件自带删表重建和分类计数;要安装器代劳就在向导里勾「顺带导入根目录的数据表文件」,默认不勾。chmod -R 775 storage public/uploads config。Windows / phpStudy 不用管这一步。数据库配置落在 config/db.local.php,升级程序不会覆盖它。FAQ
app/Model/ 里。切换模板改的是一条设置记录,随时可切回;后台界面独立在 templates/_admin/,不随前台模板变化。db.driver 改成 sqlite(或设环境变量 VB_DB_DRIVER=sqlite),跑一次安装脚本即可零依赖预览,SQL 层已做双驱动适配。uploads/年月/ 归档,缩略图单独放 uploads/thumb/。批量采集时是否把远程图抓到本地由你在后台决定。templates/ 得到的,新增目录即刻出现在后台,不需要清缓存或改代码。