夸克短剧主题模板主题
详情介绍
夸克短剧主题(duanju)使用文档
纯黑风格短剧聚合主题,前端视觉参考主流短剧站点(纯黑背景、红色强调色、海报网格、详情页双栏布局),后端结构对齐夸克影视主题(kuakeba-cn),完整适配 Zsens Admin 社区插件。
- 插件标识:
duanju - 类型:主题(theme),宿主:community
- 当前版本:1.2.02
- 作者:kuakeba.cn
目录
- [功能特性](#1-功能特性)
- [环境要求](#2-环境要求)
- [安装与启用](#3-安装与启用)
- [首次启用数据清空说明](#4-首次启用数据清空说明)
- [配置说明](#5-配置说明)
- [短剧一键同步](#6-短剧一键同步)
- [宝塔定时同步](#7-宝塔定时同步)
- [页面与功能详解](#8-页面与功能详解)
- [内容发布规范](#9-内容发布规范)
- [下载资源解析规则](#10-下载资源解析规则)
- [资源可见权限机制](#11-资源可见权限机制)
- [SEO 与结构化数据](#12-seo-与结构化数据)
- [升级与缓存](#13-升级与缓存)
- [常见问题排查](#14-常见问题排查)
- [卸载与回退](#15-卸载与回退)
- [目录结构](#16-目录结构)
- [更新日志](#17-更新日志)
1. 功能特性
- 纯黑视觉:全站纯黑背景 + 红色强调色(
#dc2626),禁用系统配色选择器,风格统一不可被前台配色干扰。 - 响应式海报网格:手机 3 列 / 平板 4 列 / 桌面 6–8 列自适应,卡片 2:3 海报比例,hover 缩放 + 渐变遮罩 + 集数角标。
- 详情页双栏布局:左侧 2:3 大海报,右侧大标题、集数徽章、日期、分类、浏览量、导演/主演、简介;下方为毛玻璃质感网盘资源区。
- 网盘资源卡片:自动识别夸克 / 百度 / 阿里 / 迅雷网盘链接并显示对应名称与品牌色图标,支持提取码展示。
- 资源回复可见:下载链接默认对普通用户隐藏,回帖后解锁;管理员、作者、VIP 用户直接可见。
- 自建导航体系:固定顶栏 + 分类下拉面板(彩色圆点标识)、移动端抽屉菜单、搜索弹窗(
/快捷键)、回到顶部。 - 社区功能完整兼容:点赞、收藏、评论(含表情、验证码)、举报、登录/注册/找回密码弹窗、PJAX 无刷新跳转全部保留。
- SEO 友好:列表页 ItemList、详情页 BreadcrumbList + WebPage 结构化数据,Open Graph / Twitter Card 分享 meta,六大搜索引擎站长验证码。
2. 环境要求
| 项目 | 要求 |
|---|---|
| Zsens Admin | >= 3.0 |
| 社区插件(community) | >= 1.0.0 |
| PHP | 8.2+(Zsens Admin 宿主要求) |
可选:VIP 会员插件(vip) | 启用后 VIP 用户可按网盘权益配置免回帖直看下载链接(真实命名空间 plugins\vip,非 vipp) |
| 可选:超级验证码插件 | 启用后登录/注册/评论验证码自动切换为超级验证码 |
3. 安装与启用
- 将
duanju文件夹上传/放置到站点themes/duanju/目录。 - 进入后台「应用中心 → 主题管理」,找到「夸克短剧主题」。
- 点击「启用」。系统会弹出确认提示:本主题启用后会清空已有分类和文章,请悉知!
- 确认后主题生效:
- static/ 静态资源自动复制到 public/static/duanju/;
- 后台「插件列表」下自动注册「短剧采集」菜单入口(宿主通用配置页);
- 前台模板合并缓存自动重建(宿主模板 + 本主题覆盖)。
- 采集参数在后台「插件列表 → 短剧采集」维护(见第 5 节);站点名称、SEO、单页文案等直接使用社区插件的全局配置。
建议在启用主题前先在后台「社区设置」中规划好分类结构(如:女频、男频、题材、爽点等一级分类及子分类),导航栏会自动读取前 4 个一级分类。
4. 首次启用数据清空说明
本主题专为短剧站设计,首次启用时会执行一次性的数据重置,以便按短剧站结构重新建库:
- 触发条件:
plugin表中不存在duanju记录(即首次安装/启用)。宿主执行升级流程时因插件表已有记录,会保留现有数据。 - 清空方式:
TRUNCATE TABLE(同时将自增 ID 重置为 1),涉及以下 10 张表:
| 表名 | 说明 |
|---|---|
community_topic | 文章/话题 |
community_category | 分类 |
communitytopictag | 话题-标签关联 |
community_reply | 回复/评论 |
community_like | 点赞 |
community_favorite | 收藏 |
communitytopicpay | 话题付费记录 |
community_report | 举报 |
communitycategorymod | 分类版主 |
communitycategoryfollow | 分类关注 |
- 派生数据(回复、点赞等)必须一并清空:否则自增 ID 重置后,旧回复/点赞会错挂到新文章上。
- 单表清空失败时仅记录日志(
[duanju] 启用主题清空数据表失败:表名),不中断启用流程。
注意:「停用 → 再启用」会再次触发清空(停用时插件记录被移除,再启用视为首次安装)。如需保留数据,请勿反复切换启用状态。
5. 配置说明
主题配置分两部分:采集参数在后台「插件列表 → 短剧采集」(主题自建配置页 /admin/community_duanju/config,保存后 CLI 同步按最新配置执行);站点信息、SEO、页面文案直接使用社区插件的全局配置(后台「社区设置」),无需重复维护。
5.1 采集参数(后台「短剧采集」)
| 配置项 | 默认值 | 说明 |
|---|---|---|
同步源站 sync_source | https://duanju.aipan.me | 需带 http(s)://,结尾不要带斜杠。 |
同步代理 sync_proxy | 留空(直连 + 自动探测常见代理端口) | 服务器无法直连源站时填写 HTTP 代理,如 http://127.0.0.1:7890。 |
目标分类 ID synccategoryid | 0(自动创建并复用「短剧」分类) | 同步内容写入的分类 ID。 |
单页抓取数量 sync_limit | 24 | 每次请求源站返回的条数,范围 1–50。 |
更新已有短剧 syncupdateexisting | 1(覆盖更新) | 0:仅新增,已存在则跳过。 |
CLI 命令行参数(--source/--proxy/--category/--limit/--update)优先级高于此处配置,未传参时按上表配置执行 — 修改配置后无需改动宝塔计划任务命令。
6. 短剧一键同步
将源站短剧批量抓取并写入社区分类与话题,支持重复执行(自动去重)。同步统一通过 CLI 脚本执行(宝塔计划任务或服务器命令行),不依赖任何 Web 路由(零路由方案,彻底规避各类环境下的后台 404 问题)。
6.1 入口
- 宝塔「计划任务 → Shell 脚本」:
php themes/duanju/bin/sync.php(见第 7 节); - 服务器命令行手动执行:
php themes/duanju/bin/sync.php --limit=24 --pages=1。
6.2 执行行为
- 增量同步:抓取 1 页(数量由
sync_limit决定),适合日常定时增量。 - 全量同步:
--all以nextcursor 逐页循环抓取,最多 maxpages页(默认 200)。 - 更新策略:
syncupdateexisting=1时覆盖更新标题/简介/封面,0时仅新增。 - 日志与状态:步骤、新增/更新条数、错误原因逐行输出,最近 100 条持久化到
runtime/duanjusyncstate.json;命令行清空数据可用sync.php --clear(二次输入 y 确认)。
6.3 入库规则
| 源站字段 | 入库字段 | 说明 |
|---|---|---|
title | community_topic.title | 标题不含集数时自动追加「(全N集)」,最长 200 字 |
cover_url | communitytopic.videocover + 正文首个 <img> | 详情页大图与列表海报 |
intro | 正文简介段 | 纯文本,换行替换为空格(详情页简介正则不接受标签) |
episode_count | 正文「集数:N集」 | 详情页集数徽章数据源 |
share_url | 正文「下载地址:URL」 | 提取码存在时追加「提取码:xxxx」 |
publishdate + updatedat | createtime / lastreply_time | 发帖时间取 publishdate 的日期 + updatedat 的时分秒,避免同日期全部归为零点 |
updated_at | update_time | 更新时间与源站最后修改时间一致 |
- 去重键:
video_url = {源站}/drama/{id},重复执行只更新不新增。 - 并发控制:
runtime/duanju_sync.lock文件锁,同一时间只允许一个同步任务,重复触发会返回「同步正在进行中」。 - 分类统计:同步结束后自动刷新目标分类的
topic_count。 - 前台展示:同步入库的短剧话题状态为已发布(
status=1),无需审核即可在前台列表看到。
7. 宝塔定时同步
提供 Shell 脚本与 URL 两种触发方式,按服务器环境任选其一。
7.1 方式一:Shell 脚本 / ThinkPHP 命令(推荐)
宝塔面板「计划任务」→ 任务类型选「Shell 脚本」,执行周期按需选择(如每天 03:00),脚本内容:
# 增量:每次抓 1 页
/www/server/php/82/bin/php /www/wwwroot/你的站点/themes/duanju/bin/sync.php --limit=24 --pages=1# 等价的 ThinkPHP 命令(需先进入项目根目录)
cd /www/wwwroot/你的站点 && /www/server/php/82/bin/php think duanju:sync --limit=24 --pages=1# 全量:逐页抓取,最多 200 页
/www/server/php/82/bin/php /www/wwwroot/你的站点/themes/duanju/bin/sync.php --all --max-pages=200可用参数:
| 参数 | 说明 |
|---|---|
--limit=N | 单页条数(1–50) |
--pages=N | 抓取页数,默认 1;仅增量时使用 |
--all | 开启游标循环全量抓取 |
--max-pages=N | 全量模式最大页数(默认 200) |
--cursor=xxx | 从指定游标继续 |
--proxy=http://ip:port | 临时指定代理,覆盖 sync_proxy |
--update=0 | 本次仅新增,不更新已存在记录 |
--source=https://... | 临时指定源站 |
脚本输出逐行日志并以退出码标识结果(0 成功 / 1 失败),可在宝塔计划任务日志中直接查看。
若提示找不到 PHP,请把 /www/server/php/82/bin/php 换成面板「软件商店 → PHP」中实际安装的版本路径。
7.2 使用建议
- 源站更新频繁时用「每小时增量」,每天凌晨再跑一次全量补漏。
- 服务器位于境外或源站访问不稳定时,在 5.6 中配置
sync_proxy。 - 同步只写入数据库,不下载封面图片;如需本地化图片,请另行处理(主题支持远程封面地址)。
8. 页面与功能详解
8.1 全局布局(layout.html)
- 固定顶栏:滚动后自动加深背景并出现阴影;左侧为胶片图标 + 站点名称,中部为导航,右侧为搜索按钮与用户区。
- 桌面导航:「首页」+ 社区前 4 个一级分类。一级分类含子分类时渲染为下拉面板——面板顶部为彩色圆点 + 分类名(第 1 个红色、第 2 个蓝色、第 3 个绿色、其余橙色),下方以标签云形式列出全部子分类;无子分类的一级分类直接显示为导航项。当前所在分类高亮。
- 搜索弹窗:点击「搜索短剧」按钮或按
/键打开;输入后按 Enter 跳转至社区搜索结果页(search?q=关键词);按 Esc 或点击遮罩关闭。 - 用户区:已登录显示头像 + 昵称,悬停展开「个人中心 / 我的收藏 / 退出登录」下拉菜单;未登录显示「登录」按钮,点击弹出社区登录弹窗(支持账号密码、手机短信登录、注册、找回密码,样式随主题纯黑配色)。
- 移动端:顶栏显示汉堡按钮,点击展开抽屉菜单(首页 + 分类树);搜索同样可用。
- PJAX:站内链接无刷新跳转,跳转后自动关闭抽屉/弹窗并重置滚动状态。
- 页脚:免责声明区块(内容来自
disclaimer_content配置,留空用内置默认文案)+ 版权行 + 备案链接 + 「回到顶部」按钮。
8.2 首页 / 分类页 / 搜索结果页(index.html)
- 纯海报网格布局(无侧边栏),页面标题按上下文自动推导:分类页显示分类名 → 搜索页显示「搜索:关键词」→ 首页显示「精选短剧」,
tab=new时显示「最新发布」。 - 每张卡片自动解析:
- 集数:优先从正文提取首个「N集」,回退从标题提取,显示为角标 + meta 行;
- 日期:发布时间格式化为 mm-dd 上新;
- 封面:thumburl 海报字段 → 回退正文首个 <img> → 均无时显示内置占位图。封面地址经 communitymedia_url() 处理以兼容本地化/远程化图片。
- 分页条仅在总页数 > 1 时显示(上一页 / 页码 / 下一页),翻页时自动保留当前 URL 的其他查询参数。
- 列表页输出 ItemList 结构化数据(见第 12 节)。
8.3 详情页(topic.html)
- 双栏头部:左侧 2:3 大海报;右侧依序为大标题、徽章行(待审核/已锁定状态、集数徽章、发布日期、所属分类、浏览量、编辑入口)、导演/主演信息、简介。
- 标题智能解析:标题中的「(全111集)」「(更新至20集)」「(共36集)」等后缀自动剥离为集数徽章,正文中不再重复显示。
- 元信息剥离:正文中的「导演:xxx」「主演:xxx」段落会被提取到信息区展示并从正文流中移除;主演支持
/、、、,、,分隔,信息区最多展示 8 位。 - 简介提取:剥离上述内容后,正文首个纯文本
<p>段作为简介展示(段内「集数:N集」字样会自动去除)。 - 网盘资源区:以毛玻璃卡片列出全部解析到的下载链接(详见第 10 节),顶部显示「网盘资源」标题与集数统计,底部附资源来源提示。
- 剩余正文:剥离后的剩余内容(剧照、图文介绍等)在资源区下方原样展示。
- 互动区:点赞、收藏、评论数直达、分享、举报按钮;评论区沿用社区完整能力(表情面板、验证码、楼层排序、嵌套回复);未登录用户显示「登录后参与评论」引导卡片。
- 内容锁定:若话题启用了社区的内容锁(回复可见/登录可见/金币解锁/VIP 可见),锁定区块按社区原逻辑渲染,此时正文与资源区均不输出。
8.4 单页(page.html)
关于我们、联系我们、隐私政策、使用条款、免责声明、版权投诉等社区单页以主题同款排版渲染(大标题 + 正文卡片)。
9. 内容发布规范
在后台或前台发布短剧话题时,按以下结构填写正文,主题会自动解析各字段:
导演:张三
主演:李四 / 王五 / 赵六
这是一段简介文字,系统会把剥离元信息后的首个纯文本段提取为简介。
这里可以放剧照等其余图文内容(会展示在资源区下方)。
下载地址:夸克网盘 https://pan.quark.cn/s/xxxxxx 提取码:ab12
下载地址:百度网盘 https://pan.baidu.com/s/xxxxxx 提取码:cd34字段解析规则:
| 内容 | 解析方式 |
|---|---|
| 标题 | 可含「(全111集)」「(更新至20集)」等集数后缀,展示时自动剥离为徽章 |
| 导演 | 独立段落 导演:xxx(全角/半角冒号均可),提取后从正文移除 |
| 主演 | 独立段落 主演:xxx,分隔符支持 / 、 , ,,最多展示 8 位 |
| 简介 | 剥离后的首个纯文本段落 |
| 集数 | 标题后缀 → 正文「集数:N集」→ 正文「全N集 / 共N集」,三级兜底 |
| 下载地址 | 每个 下载地址: 段落解析出链接与提取码,生成一张资源卡片 |
| 封面 | 话题海报字段 thumburl(或详情页 videocover)→ 正文首个 <img> |
提示:可在编辑器中将「导演:」「主演:」「下载地址:」各占一个段落(编辑器会包裹为 <p>),解析最稳定。
10. 下载资源解析规则
每个「下载地址:」段落中可包含多个链接(空格或逗号分隔),提取码按段落独立解析(格式 提取码:xxxx,3–10 位字母数字)。链接按域名 + 路径去重。
网盘类型自动识别:
| 链接特征 | 显示名称 | 图标配色 |
|---|---|---|
pan.quark.cn | 夸克网盘 | 蓝色 |
pan.baidu.com | 百度网盘 | 蓝色 |
alipan.com / aliyundrive | 阿里云盘 | 橙色 |
pan.xunlei | 迅雷云盘 | 蓝色 |
| 其他 https 链接 | 网盘下载 | 灰色 |
- 未解锁时资源卡片显示名称、网盘标签与提取码(不含明文链接),右侧为「回帖可见」/「登录后回帖可见」按钮,点击自动滚动至评论区。
- 解锁后卡片整体为外链,点击新窗口打开对应网盘,链接带
rel="nofollow noopener noreferrer"。
11. 资源可见权限机制
下载链接的可见性按以下优先级判定(正文未被内容锁定的前提下):
| 优先级 | 身份/条件 | 结果 |
|---|---|---|
| 1 | 管理员(后台登录会话或社区管理员身份) | 直接可见 |
| 2 | 话题作者本人 | 直接可见 |
| 3 | VIP 用户 | 由 VIP 会员插件 VipService::bypasses('netdisk', $actor, $userId, $categoryId) 按网盘权益配置判定(真实命名空间 plugins\vip,未安装时跳过) |
| 4 | 已在本话题发表过有效回复的用户(回复状态正常且未删除) | 解锁可见 |
| 5 | 已登录但未回帖 | 锁定,按钮「回帖可见」 |
| 6 | 游客 | 锁定,按钮「登录后回帖可见」,点击跳转登录 |
判定细节:
- 回帖解锁查询条件为
topicid 匹配、status = 1 且 deletetime = 0,管理员与普通用户分别按adminid / userid匹配。 - 所有解锁判定失败均静默降级为锁定状态,不抛出异常。
- 话题本身设置了内容锁(
content_locked)时,整页正文与资源区都不渲染,走社区统一的锁定区块逻辑。
12. SEO 与结构化数据
- 全站 meta:标题、关键词、描述直接使用社区配置;Favicon 沿用社区配置;六大搜索引擎站长验证 meta(百度 / Google / Bing / 360 / 搜狗 / 神马)按社区配置项
seoverify*自动输出;统计代码注入页脚。 - 详情页独立 TDK:
- title:详情页为「话题标题 - 站点名称」,分类页为「分类名(优先读 seo_title) - 站点名称」,搜索页为「搜索:关键词 - 站点名称」;
- description:详情页优先取话题 excerpt 摘要,其次正文去标签截取 160 字;分类页优先读 seo_description;
- keywords:详情页自动拼接话题标题 + 所属分类 + 标签名;分类页优先读 seo_keywords;
- 搜索页与后台私密页自动附加 robots=noindex,follow。
- 列表页:输出
ItemListJSON-LD,包含当前页全部条目的位置、名称与详情页 URL。 - 详情页:
- Open Graph(og:type=article、og:url、og:title、og:description、og:image)与 Twitter Card(summarylargeimage)分享 meta;
- 分享图取值顺序:视频封面 videocover → 海报 thumburl → 正文首个 <img>;
- 分享描述取值:话题摘要 excerpt → 正文去标签后前 120 字;
- BreadcrumbList + WebPage JSON-LD(首页 → 所属分类 → 当前话题)。
- 站点地图端点(由框架 Sitemap 控制器提供,所有主题通用):
| 端点 | 说明 | 缓存 |
|---|---|---|
/sitemap.xml | 标准 XML 站点地图,含首页 + 全部有效分类 + 最新 5000 篇文章 | 10 分钟 |
/robots.txt | 爬虫规则,自动携带 Sitemap: 行,屏蔽后台、登录、下载守卫接口 | 60 分钟 |
/rss.xml | RSS 2.0 订阅源,最近 30 篇文章 | 10 分钟 |
上述端点无需主题配置,框架自带路由注册在 route/app.php 最前部;部署后可直接提交到百度、Google、Bing、360、搜狗等站长平台。
- 详情页 URL:沿用社区路由
community_url('topic', ['id' => N])。
13. 升级与缓存
- 模板缓存:主题启用时宿主会把社区模板与本主题模板合并到
runtime/theme_front/duanju/。若手动替换过模板文件且页面未更新,删除该目录后刷新前台即可触发重建。 - 静态资源缓存:静态 CSS 以
/static/duanju/theme.css?v={版本号}引用,版本号取自plugin.json的version。修改 theme.css 后请同步提升 plugin.json 中的版本号(如 1.0.0 → 1.0.1),以破除浏览器缓存。 - 升级保留数据:宿主对已安装主题执行升级时会调用
install(),此时因插件表已有duanju记录,不会重复清空社区数据。 - OPcache:修改 PHP 文件后若未生效,重启 php-cgi / PHP-FPM 进程。
14. 常见问题排查
Q1:启用后页面样式错乱或仍是旧版社区样式?
删除 runtime/theme_front/duanju/ 目录后刷新前台;确认 public/static/duanju/theme.css 存在(不存在可在后台停用再启用主题触发资源复制)。
Q2:导航栏没有显示分类?
导航读取社区的一级分类(最多前 4 个)。请确认社区后台已创建分类;新启用主题后数据被清空,需要重新创建分类。
Q3:详情页没有出现网盘资源卡片?
检查正文是否包含独立段落的 下载地址: 且其后有 https:// 链接;确认该话题未开启内容锁;确认当前账号是否有权限(普通用户需回帖后刷新页面)。
Q4:VIP 用户看不到下载链接?
确认已安装并启用 VIP 会员插件(插件标识 vip,非 vipp),且会员的网盘权益(netdisk bypass)配置允许放行对应分类/作者的内容;若已启用但仍无法放行,请检查 VIP 插件版本是否支持 VipService::bypasses(feature, actor, userId, categoryId) 调用签名。
Q5:卡片封面显示占位图?
为话题填写海报字段(thumb_url),或确保正文第一个 <img> 为有效封面;本地化图片需确认已成功落地到 public/uploads/。
Q6:修改了 theme.css 但前台没变化?
提升 plugin.json 的 version 号破缓存(见第 13 节),并确认修改的是 themes/duanju/static/theme.css 源文件而非 public/static/duanju/ 下的拷贝(拷贝会在下次启用/升级时被覆盖,但源文件才是维护对象)。
Q7:搜索框按 / 没反应?
输入焦点在输入框内时 / 快捷键不生效(避免冲突),先点击页面空白处再按 /。
Q8:误启用导致社区数据被清空?
主题清空不可逆,请依赖数据库备份恢复。日常运维建议在停用/启用主题等批量变更前先备份数据库。
Q9:同步提示「同步失败」或连接超时?
服务器可能无法直连源站。代理留空时同步会先直连,失败后自动探测本机常见代理端口(7897 / 7890 / 10809 / 1080)以及 HTTPS_PROXY 等环境变量;仍未成功时在同步命令中追加 --proxy=http://127.0.0.1:7897(宝塔计划任务的 Shell 脚本中一并写入)后重试。若提示「同步正在进行中」,说明已有任务在跑(文件锁),等待结束后重试。
Q10:后台找不到「短剧一键同步」菜单?
1.2.05 起主题采用零路由方案:不再提供后台同步页面与菜单,同步统一走 CLI(php themes/duanju/bin/sync.php,宝塔计划任务配置见第 7 节)。1.2.04 及之前版本升级后,旧「短剧一键同步」菜单会在下次启用/升级主题时自动移除。请勿用「停用再启用」代替升级,那会清空社区数据。
Q11:后台出现「主题配置」入口或同步页报错/404?
1.2.07 起采集配置即主题自建「短剧采集」页(菜单位于「插件列表」下),同步无 Web 页面(纯 CLI)。后台仍显示旧「主题配置」菜单时,执行一次 php themes/duanju/bin/register.php(或应用中心对主题点升级)即自动清理并注册新菜单。前台出现 404 时多为 plugin 表缺少主题记录(手动部署未走应用中心安装所致),同样执行该脚本补登记。
Q13:宝塔/Linux 环境后台「短剧采集」菜单访问 404?
「短剧采集」菜单的路由由主题在安装/启用时自动生成的 plugins/duanju/routes.php(路由胶水)注册,正常情况下不会 404。仍 404 时按序排查:
plugins/duanju/routes.php是否存在——不存在说明生成失败,检查plugins/目录对 PHP 运行用户是否可写(宝塔默认 www 用户可写),修正权限后在应用中心对主题点「升级」(或执行php themes/duanju/bin/register.php)重新生成;- 文件存在仍 404 时为路由缓存陈旧,升级/注册动作会自动失效启动缓存,等待一次请求即可自愈。
Q12:同步后详情页没有简介?
源站简介为空时不会写入简介段。正常同步的简介为纯文本(换行已转为空格),若手动编辑正文,请不要在简介段中插入 <br> 等标签,否则详情页无法识别。
15. 卸载与回退
- 后台「应用中心 → 主题管理」停用「夸克短剧主题」,社区恢复使用默认模板与样式。
- 卸载主题时自动执行:
- 幂等清理「短剧采集」及历史版本遗留的「主题配置」「短剧一键同步」菜单;
- 删除 public/static/duanju/ 静态资源;
- 删除安装/启用时自动生成的 plugins/duanju/ 路由胶水目录(1.2.09 起)。
- 卸载不会删除社区数据;
themes/duanju/源目录保留,可随时重新启用。 - 卸载后建议删除
runtime/themefront/duanju/ 合并缓存目录,以及同步状态与锁文件 runtime/duanjusyncstate.json、runtime/duanjusync.lock。
16. 目录结构
themes/duanju/ # 主题主体包(控制器、视图、服务、CLI)
├── plugin.json # 插件元信息(版本、宿主依赖、启用警告)
├── theme.json # 主题声明(css 入口、禁用配色选择器)
├── ThemePlugin.php # 后端逻辑:「短剧采集」菜单注册、采集配置表单、安装/卸载、数据清空
├── SyncService.php # 同步服务:抓取源站、去重入库、日志与状态持久化
├── controller/admin/ # 后台控制器(由 plugins/duanju/routes.php 加载)
│ ├── Base.php # 基类:视图路径配置 + 主题模板渲染
│ └── Index.php # 采集配置页渲染与保存(含站点统计)
├── view/admin/
│ └── config.html # 采集配置页(红黑主题美化:统计卡 + 分组表单 + 悬浮保存条)
├── bin/
│ ├── sync.php # CLI 同步脚本(宝塔计划任务调用,支持 --clear 清空)
│ └── register.php # CLI 保数据注册脚本(手动部署后补 plugin 表记录)
├── icon.svg # 主题图标
├── README.md # 本文档
├── static/
│ └── theme.css # 主题样式:变量覆盖、导航、网格、详情页、资源区、页脚
└── view/front/
├── layout.html # 全局布局:顶栏导航、搜索弹窗、登录弹窗、页脚
├── index.html # 首页/分类/搜索结果:海报网格 + 分页
├── topic.html # 详情页:双栏头部、资源区、正文、互动与评论
└── page.html # 社区单页排版
plugins/duanju/ # 路由胶水(安装/启用主题时自动生成,卸载时自动删除)
└── routes.php # community_duanju 后台路由注册(闭包内加载主题控制器)线上部署清单(1.2.09 起只需两步):① 上传 themes/duanju/ 整目录;② 应用中心安装/启用主题(或执行一次 php themes/duanju/bin/register.php)。后台路由胶水 plugins/duanju/routes.php 由主题自动生成、卸载时自动清除,无需手工上传;唯一前提是 plugins/ 目录对 PHP 运行用户可写(宝塔默认 www 用户可写)。仍 404 时见 Q13 排查。
17. 更新日志
1.2.09(2026-10-21)
- 部署回归两步式:恢复「安装/启用主题时自动生成
plugins/duanju/routes.php路由胶水、卸载时自动删除」(ThemePlugin内置胶水模板,install()/registerMenus()幂等写入、内容一致不重写,uninstall()自动清理)。线上部署只需上传themes/duanju/整目录并在应用中心启用(或执行一次php themes/duanju/bin/register.php),无需再手工上传胶水文件;唯一前提是plugins/目录对 PHP 运行用户可写,生成失败时记录告警日志且不中断安装(仍 404 见 Q13)。 bin/register.php头注释同步更新(胶水由install()自动生成,脚本本身无胶水逻辑)。
1.2.08(2026-10-21)
- 「短剧采集」页面重做(修复裸 JSON + 美化):1.2.07 将菜单指向宿主通用配置端点,但该端点(
Apps::config)仅返回 JSON(表单渲染依赖插件管理页弹窗 JS),整页访问只见裸 JSON。现恢复plugins/duanju/routes.php胶水路由,改由主题自建配置页/admin/community_duanju/config。 - 页面美化:红黑渐变 Hero 头部、站点统计卡(短剧总数 / 同步分类 / 最近同步时间与增更数)、分组表单(图标标签 + 聚焦高亮 + 输入后缀提示)、悬浮保存条(含 CLI 命令提示)、右上角 Toast 反馈;深浅色模式自适应宿主后台变量。
- 保存接口:
community_duanju/save白名单校验 5 项参数(源站协议、代理格式、分类 ID 非负、数量 1–50、更新策略 0/1),走PluginService::saveConfig落库。 - 路由缓存自愈:
registerMenus()末尾失效启动缓存(1.2.04 机制回归),消除「已启用但缓存陈旧」404。
1.2.07(2026-10-21)
- 新增「短剧采集」配置入口:后台「插件列表 → 短剧采集」菜单指向宿主通用配置页(
/admin/apps/config?id=duanju,官方机制零路由),可维护同步源站、代理、目标分类、单页数量、更新策略 5 项采集参数,保存后 CLI 定时同步按最新配置执行(命令行参数仍可逐次覆盖,宝塔命令无需改动)。 syncService()恢复读取主题配置作为同步默认值,CLI 未传参时按配置执行。- 站点名称、SEO、页面文案等仍直接使用社区插件全局配置,不重复提供表单。
1.2.06(2026-10-21)
- 移除「主题配置」入口:主题不再提供专属配置菜单与 30 项配置表单(
configSchema()/defaultConfig()返回空),站点名称、Logo、SEO、统计代码、单页文案、备案信息等全部直接使用社区插件的全局配置,消除双份配置的维护负担。 - 同步参数 CLI 化:原主题配置中的同步设置(源站/代理/分类/数量/更新策略)改由
sync.php命令行参数提供(--source/--proxy/--category/--limit/--update),新增--category参数;SyncService使用内置默认值,syncService()不再读取主题配置。 - 启用/升级主题时幂等清理历史遗留的「主题配置」「短剧一键同步」菜单。
1.2.05(2026-10-21)
- 零路由方案(移除胶水文件):删除
plugins/duanju/与全部自定义后台路由,部署仅需主题目录一个包,彻底消除宝塔等环境下的后台 404 问题。 - 主题配置改走宿主通用配置页:菜单「插件列表 → 主题配置」指向
/admin/apps/config?id=duanju,由宿主Apps::config按主题configSchema渲染与保存,功能等价(此前自定义 config.html 弃用删除)。 - 同步改为纯 CLI:后台同步页面移除,
bin/sync.php新增--clear(交互确认)与--clear --force(脚本直清)承担原「一键同步/全量同步/清空数据」全部能力;旧「短剧一键同步」菜单在启用/升级时自动清理。 移除未实现的 sync_token 配置项:/duanju-sync/{token}URL 触发接口历史上从未注册路由,属文档误导,一并删除相关配置与 README 章节。
1.2.04(2026-10-20)
- 后台路由适配 community 插件风格:入口从
/admin/duanju/ 改为 /admin/communityduanju/(与 communityconfig等同款命名),降低独立路由辨识成本。 - 控制器与视图收编进主题目录:
controller/admin/、view/(含 front)全部移至themes/duanju/,plugins/duanju/仅保留routes.php胶水文件(闭包内require_once手动加载控制器,不依赖 PSR-4 目录结构与 autoload 刷新)。线上部署从此只需「主题目录 + 1 个胶水文件」。 - 路由缓存自愈:
registerMenus()末尾自动失效启动缓存,下次请求回退实时扫描已安装包并注册路由,消除「已启用但缓存陈旧」导致的线上 404。 - README 部署清单强化:Q13 写明三要素(plugin 表记录 / 胶水文件 / 路由缓存)与线上排查步骤。
1.2.03(2026-10-20)
- 宝塔环境后台 404 修复:后台「主题配置」与「短剧一键同步」的路由注册依赖
plugin表中的主题记录;手动部署主题目录(未走应用中心安装)时记录缺失,导致两个后台入口 404(前台渲染与后台路由注册是两套机制,前台正常掩盖了问题)。已在本地复现并验证修复。 - 安装钩子防误清:
install()现于记录缺失时先检查社区表——分类与文章非空则只补登记保留数据,不再清空运营中的短剧内容;仅全新空库才执行建库清空。 - 新增 CLI 保数据注册脚本
themes/duanju/bin/register.php:一条命令完成补记录、注册菜单、启用主题、重建路由缓存,幂等可重复执行,适配宝塔/SSH 环境(详见 FAQ Q13)。
1.2.02(2026-10-20)
- 发帖时间与源站一致:源站
publishdate 仅含日期,同步时结合 updatedat的时分秒生成createtime / lastreplytime,避免同日期短剧全部归为零点导致排序与展示失真;updatetime同步取源站updated_at,不再使用同步时的当前时间。 - 更新已有短剧时同步刷新发帖时间:增量更新路径现一并回写
createtime / lastreplytime / updatetime,确保历史数据的时间字段随源站更新。 - 首页日期与详情页一致:列表页
createtime 经模型 toArray() 后为格式化日期字符串,原代码 (int) 强转只取到年份导致始终显示 01-01;现兼容字符串与数字两种形态还原时间戳,日期格式统一为 Y-m-d,与详情页 getData('createtime')取值一致。 - 开发约定:本主题及今后新建的插件/主题一律不得修改宿主项目(
app/、config/、route/、view/等)的任何文件;所需能力通过插件目录(plugins/duanju/)与主题目录(themes/duanju/)内的自有文件实现。
1.1.2(2026-10-19)
- 后台路由修复:主题配置与短剧一键同步改为独立插件路由,不再依赖框架内置
Apps::theme()与Apps::duanjuSync()方法,修复点击菜单无反应/404 问题。 - 视图加载修正:后台控制器视图路径指向宿主
view/admin/目录,插件视图通过完整路径渲染,修复View::engine()->config()不支持view_path键导致的 500 错误。 - 脚本加载时序:后台视图 JS 从
{block name="content"}移至{block name="js"},确保 jQuery 加载后再执行,修复$ is not defined错误。
1.1.1(2026-10-19)
- VIP 插件引用修正:主题模板与下载守卫插件中曾错误引用
plugins\vipp命名空间,现已统一修正为真实命名空间plugins\vip,VIP 用户网盘权益放行逻辑恢复生效。 - SEO 独立 TDK:
layout.html的 title / description / keywords 现支持详情页专属取值(话题标题+摘要+标签拼接)、分类页专属取值(优先读分类seotitle / seodescription/seo_keywords);搜索页与私密页自动附加robots=noindex。 - 站长验证 meta 输出:六个
seoverify*配置项(百度 / Google / Bing / 360 / 搜狗 / 神马)现由FrontBase透传到视图并在layout.html输出对应 meta 标签。 - 站点地图端点:框架新增
/sitemap.xml(26 URL,10 分钟缓存)、/robots.txt(自动携带 Sitemap 行)、/rss.xml(RSS 2.0)三个标准 SEO 端点,部署后可直接提交各站长平台。 - 修复
layout.html中og:image/twitter:image在详情页取海报时未绝对化导致分享卡片图片失效的场景。
1.1.0(2026-10-18)
- 新增「短剧一键同步」:后台页面可视化抓取源站短剧,支持增量/游标全量同步、实时日志与状态概览。
- 新增同步设置 6 项:源站、代理、目标分类、单页数量、更新策略、访问令牌。
- 新增宝塔定时同步方案:CLI 脚本
bin/sync.php与带令牌的 URL 触发接口/duanju-sync/{token}。 - 同步入库自动去重(
videourl)、文件锁防并发、自动创建/复用「短剧」分类并刷新 topiccount。 - 后台主题卡片新增「一键同步」快捷按钮;主题简介文案调整为主流短剧站点表述。
1.0.0(2026-10-18)
- 首个版本。
- 纯黑短剧风格:固定顶栏 + 分类下拉导航 + 海报网格首页 + 详情页双栏布局。
- 正文智能解析:标题集数剥离、导演/主演/简介提取、下载地址多网盘识别(夸克/百度/阿里/迅雷)与提取码解析。
- 资源回复可见权限体系(管理员/作者/VIP/回帖用户四级放行)。
- 首次启用自动清空社区数据并重置自增 ID,便于短剧站重新建库。
- SEO:ItemList / BreadcrumbList / WebPage 结构化数据、OG 与 Twitter Card、六大站长验证码、统计代码。
- 完整兼容社区登录弹窗、评论、点赞、收藏、举报、PJAX 与验证码体系。
更新记录 (13)
-
v1.2.28
2026-10-26
更新定时采集
-
v1.2.27
2026-10-25
优化适配VIP插件通知
-
v1.2.26
2026-10-24
后端配置页进行重新布局
-
v1.2.23
2026-10-24
新增白天模式,自自主切换
-
v1.2.22
2026-10-24
优化手机端显示
-
v1.2.20
2026-10-23
新增页脚信息
-
v1.2.10
2026-10-21
新增下载设置
-
v1.2.09
2026-10-21
主题设置走社区配置
-
v1.2.03
2026-10-20
修复路由注册问题
-
v1.2.02
2026-10-20
修复日期格式
-
v1.2.01
2026-10-20
去掉首页community.html尾巴
-
v1.1.2
2026-10-19
修复BUG
-
v1.1.1
2026-10-19
## 17. 更新日志 ### 1.1.1(2026-10-19) - **VIP 插件引用修正**:主题模板与下载守卫插件中曾错误引用 `plugins\vipp` 命名空间,现已统一修正为真实命名空间 `plugins\vip`,VIP 用户网盘权益放行逻辑恢复生效。 - **SEO 独立 TDK**:`layout.html` 的 title / description / keywords 现支持详情页专属取值(话题标题+摘要+标签拼接)、分类页专属取值(优先读分类 `seo_title` / `seo_description` / `seo_keywords`);搜索页与私密页自动附加 `robots=noindex`。 - **站长验证 meta 输出**:六个 `seo_verify_*` 配置项(百度 / Google / Bing / 360 / 搜狗 / 神马)现由 `FrontBase` 透传到视图并在 `layout.html` 输出对应 meta 标签。 - **站点地图端点**:框架新增 `/sitemap.xml`(26 URL,10 分钟缓存)、`/robots.txt`(自动携带 Sitemap 行)、`/rss.xml`(RSS 2.0)三个标准 SEO 端点,部署后可直接提交各站长平台。 - 修复 `layout.html` 中 `og:image` / `twitter:image` 在详情页取海报时未绝对化导致分享卡片图片失效的场景。 ### 1.1.0(2026-10-18) - 新增「短剧一键同步」:后台页面可视化抓取源站短剧,支持增量/游标全量同步、实时日志与状态概览。 - 新增同步设置 6 项:源站、代理、目标分类、单页数量、更新策略、访问令牌。 - 新增宝塔定时同步方案:CLI 脚本 `bin/sync.php` 与带令牌的 URL 触发接口 `/duanju-sync/{token}`。 - 同步入库自动去重(`video_url`)、文件锁防并发、自动创建/复用「短剧」分类并刷新 `topic_count`。 - 后台主题卡片新增「一键同步」快捷按钮;主题简介文案调整为主流短剧站点表述。 ### 1.0.0(2026-10-18) - 首个版本。 - 纯黑短剧风格:固定顶栏 + 分类下拉导航 + 海报网格首页 + 详情页双栏布局。 - 正文智能解析:标题集数剥离、导演/主演/简介提取、下载地址多网盘识别(夸克/百度/阿里/迅雷)与提取码解析。 - 资源回复可见权限体系(管理员/作者/VIP/回帖用户四级放行)。 - 首次启用自动清空社区数据并重置自增 ID,便于短剧站重新建库。 - SEO:ItemList / BreadcrumbList / WebPage 结构化数据、OG 与 Twitter Card、六大站长验证码、统计代码。 - 完整兼容社区登录弹窗、评论、点赞、收藏、举报、PJAX 与验证码体系。
QQ官方交流群