三层扩展体系
事件总线与过滤器构成钩子中心,模块靠 PSR-4 自动发现,插件以清单文件声明生命周期。 安装、启停、卸载、依赖检查全部在后台完成。
钩子 · 模块 · 插件全开放的积木式内容管理系统
一套纯 PHP 实现、为国内共享虚拟主机而生的内容管理系统。6 项内核能力、16 个业务模块、4 款官方插件, 从内容生产、付费变现、会员运营到站群与多语言, 内核不改一行即可扩展功能,最普通的虚拟主机也能稳定跑起来。
内核基于 CodeIgniter 4 构建,事件系统与过滤器替代传统钩子机制, 模块依靠 PSR-4 命名空间自动发现。全栈不引入 Redis、Memcached、WebSocket 等重型服务。
加一个功能就得改核心代码,系统一升级,之前的改动全部推倒重来。
插件生态被平台方攥着,想定制先谈授权费,商用还要看协议脸色。
动辄要求独立服务器、Redis 扩展、命令行权限,共享虚拟主机根本装不上。
前台全靠动态渲染,访问量一上来数据库先撑不住,页面直接超时。
想再做第二个站点,就得再买一套程序、再养一份数据,运营成本成倍翻。
钩子中心 + 模块 + 插件三层扩展体系,核心目录一行不改即可挂载新功能。
全部代码开源无加密,依赖均为 MIT / Apache 2.0 宽松协议,免费商用、无水印、无强制开源。
纯 PHP 实现,仅依赖 PHP 默认开启扩展,Web 引导安装,上传即用。
静态化优先:可静态化的页面全部输出 HTML 文件,动态请求只管登录、投稿、支付等交互。
单套程序多站点站群与多语言,一台虚拟主机即可承接多站点运营。
这四项能力决定了系统能扩展成什么样——它们不是外挂的插件,而是写进底座的基础设施。
事件总线与过滤器构成钩子中心,模块靠 PSR-4 自动发现,插件以清单文件声明生命周期。 安装、启停、卸载、依赖检查全部在后台完成。
表单结构以数据形式落库,后台拖拽字段即可成表;提交时按结构自动生成校验规则, 并在校验前、保存前、保存后三个节点开放钩子。
标签首次使用即编译为纯 PHP 缓存文件,后续请求直接执行编译产物。 arclist、pagelist、form、block 四个内置标签覆盖绝大多数调用场景。
页面即区块树,拖拽即可增删排序;发布后自动生成纯静态 HTML, 内容变更时定向更新受影响的静态页,无需全站重生成。
栏目支持无限级分类与自定义内容模型,文章具备草稿、待审、已发布、已驳回、回收站五态流转, 推荐位、标签、SEO 字段一应俱全,发布与删除动作均对外抛出钩子。
按四个能力域归档:6 项内核能力、16 个业务模块、4 款官方插件。点击切换查看每一域的构成。
内核与扩展底座。这一层决定了系统能否在不改内核的前提下被扩写,是后续所有模块的地基。
基于 CodeIgniter 4 搭建轻量内核,以事件系统与过滤器组成钩子中心,内置 15 个覆盖内容、会员、表单、视图、系统的钩子点;模块通过 PSR-4 命名空间自动发现,静态资源一键发布。
RBAC 多角色权限与操作日志;模块与插件支持安装、启用、停用、卸载与版本升级,安装前自动核验核心版本与依赖模块,并提供可视化安装向导。
15 类字段类型,后台可视化设计器边拖边预览;按结构自动生成服务端与前端校验;宽表加索引表双写,兼容 MySQL 5.6 且避免 JSON 检索瓶颈。
分词、语法树、编译缓存三段式架构,模板仅首次解析;arclist、pagelist、form、block 内置标签,配合后台碎片管理,页脚、公告、广告位无需改模板即可维护。
12 类区块、7 种栏数布局的拖拽编辑器;页面配置以区块树形式存储,逐块渲染逐块缓存;一键或增量生成纯静态 HTML,同步更新站点地图并推送搜索引擎。
无限级栏目、自定义内容模型与字段、文章五态流转、推荐位与标签管理、媒体库与回收站,构成全站内容的统一底座。
内容生产与变现。作者、读者与平台三方的创作关系与现金流,都收在这一层。
由 StPageFlip 与 PDF.js 组合实现翻页阅读,PDF 在浏览器端解析渲染, 服务端不需要 Imagick、不需要 Ghostscript,普通虚拟主机即可承载。
五档默认会员组并可自定义,个人中心包含投稿、订单、余额积分明细、收藏与消息;积分钱包支持充值与提现,作者主页自动聚合其全部作品。
前台投稿支持草稿自动保存与附件上传,两级审稿流可配置审核人;审核通过自动发布并按栏目稿费标准结算至作者余额,全程站内信通知。
微信与支付宝以纯 PHP 对接,覆盖单篇、单本、会员、充值、打赏五类场景;付费内容静态页只输出试读部分,余下内容由接口按权限下发,静态缓存不受影响。
PDF 分片上传支持 200MB 大文件;杂志具备分类、期数、定价、试读、阅读统计;同时接管支付、投稿、区块、标签、静态化与评论收藏体系。
会员之外的站点互动与信息触达能力,全部随内核与模块交付。
文章页评论互动,后台集中审核管理,配合敏感词插件在提交侧完成内容安全过滤。
后台可视化设计表单结构,报名、反馈、征集零代码上线,提交数据后台统一管理。
站内信体系覆盖审核结果、支付到账、系统公告等场景,业务动作自动触达当事人。
按关键词检索文章标题与内容并分页展示,热门搜索词统计,配合关键词内链插件提升站内导流。
推荐位聚合首页与栏目精华内容,专题模块组织活动页与合集页,运营位随配随用。
面向多站点、多语言与长期运维的能力,配以四款官方插件。
单套程序绑定多个域名,内容、模板与配置按站点隔离,后台切换站点分别打理。
多语言站点与语言包管理,同一套后台维护多语种内容,适配跨境与双语场景。
拖拽区块装配页面,一键或增量生成纯静态 HTML,配套站点地图与搜索引擎推送开关。
安全总览、审计日志、内容权限与图形验证码,配合 RBAC 与登录锁定构成纵深防御。
幻灯片管理、广告管理、敏感词过滤、关键词内链,即装即用,均经钩子中心挂载、不侵入核心。
五层结构自上而下收敛,扩展能力集中在模块层,稳定性由内核层保证。
PC 与移动端自适应模板、三维电子杂志阅读器、小程序接口输出、区块树渲染结果。
纯静态 HTML 输出、编译后的模板缓存、标签结果缓存、配置与权限的文件缓存。
内容、会员、投稿、支付、电子杂志、评论、表单、通知、搜索、推荐、专题、站群与多语言模块,彼此通过钩子与服务通信。
钩子中心、模块与插件管理器、万能表单器、碎片标签引擎、积木装配器、RBAC 权限、安装与迁移。
CodeIgniter 4 的路由、控制器、模型、视图、验证、事件、过滤器与文件缓存;MySQL 数据存储与本地文件存储。
所有条目均面向国内共享虚拟主机的通行环境设计,不含需要单独申请或编译的条件。
| 项目 | 要求 | 说明 |
|---|---|---|
| 操作系统 | Linux / Windows Server / 主流虚拟主机 | 兼容主流部署环境 |
| Web 服务器 | Apache 2.4 及以上,或 Nginx(需支持 URL 重写) | 需启用 URL 重写 |
| PHP | 8.2 及以上 | 国内虚拟主机普遍已支持 |
| 数据库 | MySQL 5.7 及以上(或兼容的 MariaDB),InnoDB 引擎,utf8mb4 字符集 | 推荐 MySQL 8.0 |
| 必需扩展 | intl、mbstring、openssl、json、mysqli、fileinfo | 建议启用 gd、curl、sodium |
| 站点根目录 | Web 根目录指向系统 public 目录 | 仅暴露 public,保护源码目录 |
| 可写目录 | writable 目录需具备写入权限 | 用于缓存、日志、会话与上传文件 |
| 安装方式 | 上传源码 → 配置 .env → 导入 install.sql | 无需 Composer 命令行 |
| 伪静态 | .htaccess 或 Nginx rewrite 规则 | 含静态文件优先返回 |
| 缓存组件 | 纯文件缓存,不需要 Redis 或 Memcached | 消除主机扩展依赖 |
| 第三方组件 | StPageFlip、PDF.js、qrcode-generator、思源字体等全部预打包 | 不依赖外部 CDN 亦可运行 |
上传源码并将 Web 根指向 public → 配置 .env → 创建数据库并导入 install.sql → 设置 writable 目录权限 → 访问验证。
对外仅暴露 public 目录,writable、.env、system、app 禁止 Web 访问;后台登录失败多次自动锁定来源地址。
升级前备份数据库与源码,替换新版源码并按需执行数据库结构升级,最后清理缓存。
同一套底座,按模块启停即可切换形态,不必为不同业务分别选型。
开启内容与标签模块即可上线,静态化让低配主机也能承接搜索引擎带来的访问。
投稿审稿、积分付费、打赏与会员体系组合使用,作者与读者形成完整的付费闭环。
PDF 上传即生成翻页刊物,配以站点权限与密码访问,适合对外发布案例集与年度报告。
会员组、积分钱包、证书化会员证与扫码验证,积分解锁阅读开箱即用。
一套程序绑定多个域名,各站内容、模板与支付独立配置,后台切换站点即可分别打理。
多语言站点与语言包管理,同一套后台维护多语种内容,适配跨境与双语场景。
选型与二次开发中最常被问到的几个问题,先在这里说清楚。
如果这里没有覆盖你的疑问,可在程序包内的开发文档中查阅模块、插件、标签与区块四份规范说明。
程序本体发布在 MIT 协议下,内置的 CodeIgniter 4、StPageFlip、PDF.js、qrcode-generator、思源字体等第三方组件均为宽松开源协议。 整体方案不含任何强传染性协议组件,闭源商业项目可直接使用。