程序文件详解(逐目录逐文件)

使用指南   430 次阅读   更新于 2026-10-07   发布于 2026-10-07 返回开发文档
两套程序各有哪些文件、谁 require 谁、表是怎么配出来的、哪些文件不能公开。需要访问口令。

〇、先建立一张全局图

这一套东西里其实装着三类互相独立的程序,共用一份代码仓库,但各有各的入口、配置和数据表前缀:

  • 四套程序:laolicms 是根目录 index.php + application/(库 laoli_new 这类), 另外三套 llseo / laoli-toolbox / laoli-bizhi 各自一个目录一套库,装到客户站点上跑内容、工具、壁纸。
  • 官网:web/ 根目录,纯静态加 inc/site.php,没有数据库;首页是 laolicms 的介绍, /seo/、/tool/、/bizhi/ 各是一个二级目录,文档在 /docs/{程序}/。
  • 授权中心:web/shouquan/ 一个独立应用,自己的 index.php、config.php、自己的库(laoli_lic,表前缀 un_), 卖四套程序、发授权码、发模板与插件包,对外提供 /api/ 校验、目录、更新与下载接口。

几边代码互不引用:官网与授权中心都不 require application/ 里的任何东西,程序也不碰 web/。 相同的函数名(guojiz()、arcurl()、siteurl()…)是各自 inc/fun.php 里的独立实现,改一边不会同步另一边。

一、加载顺序(读代码从这里入手最快)

CMS 端

  1. index.php 只做一件事:require application/inc/common.php。
  2. common.php 定义 IN_APP、UN_VERSION、UN_ROOT、APP_PATH, 没装(没有 application/config.php)就跳安装向导。
  3. 依次 require db.php → page.php → tpl.php → fun.php → schema.php → jifen.php → license.php, 然后建全局连接 db()、开 UNSESSID 会话。
  4. 继续 require form.php(表单令牌/防刷)、user.php(会员)、jump.php(跳转统计)、plugin.php(插件扫描)。
  5. route() 按 url 第一段分发:内置频道走各自函数,剩下的按子系统标识走通用 page_index/page_list/page_detail; 论坛、收录申请、ajax 这些才按需再 require forum.php、apply.php、ajax.php、misc.php。
  6. 后台每个页面第一行都是 require __DIR__.'/global.php',鉴权、CSRF、控件渲染全在里面。

授权中心端

  1. web/shouquan/index.php → web/shouquan/inc/common.php:定义路径、读 web/shouquan/config.php、连库、开 UNSESSID 会话。
  2. common.php 里 route() 先跑内置频道(buy/order/license/dev/download/plan/user/forum/notice/search/tag/page), 剩下的按子系统标识取货;定义在 UN_ADMIN / UN_API 时不跑前台路由。
  3. web/shouquan/admin/*.php 各自 require global.php:超管门槛(admin_need_super())、 admin_safe_post() 会话令牌、admin_input() 字段控件、admin_data() 表单收集都在这里。
  4. 下单、签发、下载这条商业主线在 inc/order.php + inc/license.php + inc/shop.php, 对外四个接口在 web/shouquan/api/,鉴权与限流在 web/shouquan/inc/api.php。

官网端

  1. 根目录 web/index.php 与四个程序落地页都是静态页,数据只在 web/inc/site.php 一处(程序名、版本、价格、功能清单、下载地址)。
  2. 文档在 web/inc/docs.php + web/inc/docs/{程序}/*.html,片段里的 {site}、{store}、{doc:xxx} 在输出前替换成真实地址,所以同一份片段既能从官网根目录走,也能从二级目录走。

二、数据库结构要点

字段配置驱动是这一套程序的核心:子系统不是代码写死的,而是三张表配出来的。

  • un_sys:一个子系统一行,记标识、别名 url、内容表名、每页条数、默认排序、开关分类、列表/详情模板名。
  • un_fields:这个子系统有哪些列、控件类型、哪个是标题/封面/正文、进不进列表/表单/搜索。
  • un_sort:全部分类共用一张表,按 sys 区分,parent_id=0 是一级。
  • un_content_标识:真正存内容的表,un_sys + un_fields 决定它有哪些列, 后台「数据工具」建子系统或补字段时按这两张表现建表(sys_build())。
  • un_config:站点设置,前台用 guojiz('键') 读;带 tpl_ 前缀的键属于模板设置。

官网端另有 un_plan(授权等级)、un_order(订单)、un_license / un_license_domain(授权码与绑定域名)、 un_dev_*(开发者投稿)、un_key(接口密钥)。CMS 端另有 un_user、un_forum_*、un_apply、 un_plugin、un_ad、un_nav、un_link、un_page、un_notice、un_stats 等。

删子系统要谨慎:商店、订单、下载、文档页都按 cms / mb / cj / doc 这四个标识取货(CMS 端的站点频道 html 是首页站块与收录申请依赖的核心),这几个只能停用不能删,后台已经拦住了。

三、逐个文件的职责

「作用」这一列直接从每个文件头部注释里取,改文件说明时记得同步改注释,两边一致才对得上。

laolicms 根目录与安装向导

文件作用行数
index.php前台唯一入口(所有页面地址经此进入通用路由)10
install/index.php网页安装向导(环境检测 → 数据库与站点信息 → 建表写配置 → 安装完成)281
install/demo.php安装演示数据(分类、示例内容、公告、友情链接、广告位、管理员)568

CMS 内核 application/inc

文件作用行数
application/inc/ajax.php前台交互接口(点赞 / 收藏 / 评论),一套代码服务所有子系统,只按 sys + id 定位126
application/inc/apply.php前台「提交收录」页。收录只进「站点」这一个子系统(旧站也只有网址导航收投稿), * 所以这里的目标固定是站点,下面选的是站点分类;提交时先过违禁词,再按需出门抓一次 * 对方网页(一键获取标题/关键词/简介/图标,同时判断对方有没有链回本站,勾了自动审核就直接通过)。 * 地址:/apply.html(GET 出表单,POST 收表单)、/ajax/fetch(一键获取的接口)277
application/inc/common.php前台引导与路由(读配置、连库、加载通用函数、按 url 分发到模板)730
application/inc/db.php数据库封装(极简 PDO 版,全站只用这一个类)126
application/inc/fetch.php代客户抓一次网页信息(收录申请页的「一键获取网站信息」)。 * 这是本站唯一会主动访问外人填的网址的地方,所以只放 http/https、只放公网 IP、 * 限制大小和时间,抓回来的标题/关键词/简介/图标和「有没有链回本站」一起给前端和审核用。299
application/inc/form.php前台表单帮手。会员、论坛、收录申请三处表单共用同一套令牌校验、一次性提示、 * 防刷与上传,写法跟后台 global.php 的 admin_safe_post() 一致,只是会话键分开存, * 前台的令牌不会跟后台互相顶掉。281
application/inc/forum.php前台论坛。板块列表、帖子列表、帖子详情、发帖、回复、删除都在这份文件里, * 地址统一是 /forum/xxx:b12=12号板块、p34=34号帖子、new=发帖、reply=回复、act=管理动作。 * 帖子和回复存纯文本,模板里用 nl2br 输出,会员写的 html 不会被当代码执行。346
application/inc/fun.php全站通用函数库(一套函数服务所有子系统,只差表名与字段配置)1295
application/inc/jifen.php积分与会员权益引擎。积分/经验的加减与流水、经验等级表、勋章与头像框、积分商城、 * VIP 开通、打赏、扣积分解锁(下载 / 隐藏内容)、关注与访客、站内消息、会员申请单 * 全部集中在这里,前台会员中心(inc/user.php)、详情页和后台(admin/user*.php)都调这一份。 * 数据表是 MyISAM,没有事务,所以所有扣费都走「带余额条件的 UPDATE」,扣不成负数。1024
application/inc/jump.php站点的本站跳转与点入/点出统计(旧站的 go.php 只管网址导航,这里也一样)。 * 前台的站点外链一律换成 /go/短链,地址栏里看不到对方域名; * 点出去给对方加一次点出,别人带着本站地址跳进来时按 Referer 加一次点入。 * 软件下载地址、工具外链这些都不接管。179
application/inc/license.php授权码本地校验 + 联网激活(去授权中心远程核对)。未授权站点功能完全正常,不弹窗不降级。217
application/inc/migrate.php旧站数据迁移引擎 —— 把老站库(zzdh_* 那一套表)按字段映射搬进新骨架: * 12 个子系统的分类与内容、会员、评论、论坛板块/帖子/回复、导航菜单、公告、友情链接, * 以及旧站目录里的本地图片和工具页面。所有步骤都按旧表主键分批推进,几十万条也不会超时。963
application/inc/misc.php前台的零散页面 —— 友情链接(/link.html)与排行榜(/ranking.html)。 * 排行榜不写死栏目:凡是有浏览数列的子系统都会出现在切换条里, * 新增子系统后排行榜自动多一个页签,不用改这个文件。 * 榜型照旧站那十七种归并成十种(总浏览/日榜/月榜/最新/点入/点出/点赞/收藏/评分/编辑/随机/精选), * 地址不带 sys 就是全站聚合榜(每个子系统各取一批再按同一个指标合排),带 sys 就是这一个子系统自己的榜。200
application/inc/page.php分页结果对象(既能被 {list} 直接循环,又能输出分页条)92
application/inc/plugin.php插件内核。插件放在 application/plugin/<标识>/ 下面,各自带 info.php(名称版本作者说明)、 * main.php(启用时包含的代码)、set.php(默认参数)、admin/<标识>.php(自己的后台页)。 * 开没开只看 config 表里的 plugin_<标识>,卸载只删目录,不动数据库里的内容。158
application/inc/schema.php数据层(基础建表 + 子系统与字段配置种子 + 按字段配置自动建内容表)1269
application/inc/store.php应用商店 —— 从授权端在线拉模板/插件/程序目录,模板与插件买断下载(收费的要先在那边开通,免费的直接给链接), * 程序包仍要授权码换一次性令牌;模板包可以直接解压安装到 application/template/,插件与程序包只落到 uploads/store/ 由站长手动安装。512
application/inc/tpl.php模板引擎(laolicms 标签语法:{list}/{if}/{include}/{page}/变量点语法,编译成 php 缓存)351
application/inc/update.php在线更新 —— 查本站授权对应商品的最新版,下载程序包,预览并备份后覆盖到站点根目录, * 覆盖完自动补齐新数据表与设置项,出问题时一键回滚到覆盖前的文件。360
application/inc/user.php前台会员中心。登录、注册、退出、我的精选(收藏 / 评论 / 帖子 / 申请)、每日签到、 * 资料与密码修改都在这一份文件里,地址统一是 /user/动作。 * 会员表就是后台那张 user,role>=1 的账号既能进后台也能在论坛发帖,一个账号走全站。821

CMS 后台 application/admin

文件作用行数
application/admin/comment.php评论管理。全站评论都在一张 comment 表里,用 sys + item_id 指向任意子系统的一条内容。 * 地址:comment.php?sys=&status=&ks=&page=144
application/admin/content.php内容管理。所有子系统共用这一页,列表显示哪些列、表单有哪些项,全由「字段配置」决定。 * 地址:content.php?sys=标识&ks=关键词&cid=分类&status=&page=318
application/admin/edit.php新增 / 编辑一条内容。表单项目完全由「字段配置」里 in_form=1 的字段生成, * 换任何子系统都是同一套代码,只是字段不同。 * 地址:edit.php?sys=标识&id=内容ID(不带 id 就是新增)235
application/admin/fields.php字段配置。子系统有哪些列、后台表单怎么渲染、列表/详情/搜索取哪些字段,都在这里改; * 保存后自动建列或改列(sys_build),加新字段不用动代码。 * 地址:fields.php?sys=标识 ;编辑加 &id=字段ID272
application/admin/global.php后台公共入口(登录鉴权、CSRF、页面框架、菜单、字段控件渲染、上传与批量操作) * 每个后台页面第一句都是 require __DIR__ . '/global.php';1010
application/admin/index.php后台首页(数据概览、各子系统条数、待处理事项、系统信息)113
application/admin/license.php授权信息页。显示本站授权状态、当前域名与本站密钥,支持录入或清除授权码。176
application/admin/logout.php退出后台登录14
application/admin/migrate.php后台「数据迁移」页 —— 填旧站数据库(还有可选的旧站目录),把老站全部内容与分类、会员、 * 论坛、评论、导航、公告、友链分批搬进本站,页面自己一跳一跳跑完,几十万条也不会超时。345
application/admin/plugin.php插件管理。上面是插件卡片列表(本地插件 / 在线插件两个页签,本地卡片能启用、停用、卸载、设置), * 下面是某个插件自己的后台页(插件在 info.php 里声明 admin 文件才会出现)。 * 地址:plugin.php ;看某个插件的页面加 ?see=插件标识251
application/admin/setting.php站点设置。改的就是 config 表里的键,前台用 guojiz('键名') 读取; * 带 tpl_ 前缀的键是给「模板设置」用的,这里不显示。166
application/admin/sort.php分类管理。所有子系统共用一张分类表(sort),用 sys 区分,支持两级。 * 地址:sort.php?sys=标识 ;编辑加 &id=分类ID211
application/admin/stats.php数据统计。展示 visit 表的浏览量趋势、每个子系统的内容数与浏览/收藏/评论合计, * 以及全站浏览最多的十条内容。126
application/admin/store.php应用商店。浏览官网的程序/模板/插件目录,把包拉到 uploads/store/,模板包可以一键解压安装。 * 只有程序类商品要本站授权码换下载地址;模板与插件是买断下载,免费的直接给链接,收费的看官网那边开通没有。215
application/admin/sys.php子系统管理。一套函数通用所有子系统,这里只是登记一个标识、一张内容表和它的字段, * 新建子系统会自动建表;字段在「字段配置」里加,内容在「内容管理」里发。 * 地址:sys.php ;编辑加 ?id=子系统ID355
application/admin/table.php导航菜单 / 广告位 / 友情链接 / 公告 / 单页这一批简单表的增删改查,一个文件管五张表, * 每张表要填什么由 global.php 里的 admin_tables() 规格决定。 * 地址:table.php?tb=nav|ad|link|notice|page ;编辑加 &id=ID283
application/admin/theme.php模板设置。上面是模板卡片列表(本地模板 / 在线模板两个页签,本地卡片可以启动、删除、进设置), * 下面是当前模板自己的设置:首页各子系统模块的顺序与开关(写进 config 表的 tpl_ 前缀键,前台用 * cmspc('键名') 覆盖模板 set.php 的默认值)和配色等模板参数。494
application/admin/tools.php数据工具。清模板缓存、按字段配置同步数据表、导出 SQL 备份、修复与优化表、清理访问记录。172
application/admin/update.php在线更新。向授权端问本站授权对应的程序有没有新版,下载更新包,先预览再备份, * 确认后覆盖到站点根目录;覆盖完自动补新数据表和新设置项,出问题可以回滚。248
application/admin/upload.php后台上传接口(图片与附件,返回 {code:1,data:{url}})30
application/admin/user.php会员管理。全站共用一张 user 表,一个账号在论坛、收藏、投稿里通用; * 这里的积分/经验调整都会走 inc/jifen.php 记一笔流水,方便和会员中心的「积分记录」对上账。 * 地址:user.php?ks=&role=&status=&page= ;编辑加 ?id=UID406
application/admin/user_apply.php会员审核。勋章申请、头像框申请、实名认证都进 user_apply 表这一条队列, * 通过就按申请类型发放(发勋章 / 发头像框 / 实名奖励),驳回会同时给会员发站内消息。 * 地址:user_apply.php?kind=&status=&page=178
application/admin/user_set.php会员与积分设置。这些开关和数值存在 user_config 表里(分组 grp), * 前台会员中心、积分商城、扣积分解锁、打赏、实名认证都读这一份(inc/jifen.php 的 ucfg())。 * 地址:user_set.php138

官网(静态站)web

文件作用行数
index.php—123
inc/site.php—175
inc/docs.php—153

授权中心内核 shouquan/inc

文件作用行数
inc/api.php对外接口公共引导(加载内核但不跑前台路由,统一 JSON 输出与来源校验)47
inc/common.php官网(授权端)前台引导与路由 —— 读配置、连库、加载通用函数,按地址分发到商品页、下单页、开发者中心、下载中心与接口505
inc/db.php数据库封装(极简 PDO 版,全站只用这一个类)126
inc/dev.php开发者中心 —— 会员投稿模板/插件(含 zip 上传)、我的作品与在售状态、接口密钥管理273
inc/form.php前台表单帮手。会员、论坛、收录申请三处表单共用同一套令牌校验、一次性提示、 * 防刷与上传,写法跟后台 global.php 的 admin_safe_post() 一致,只是会话键分开存, * 前台的令牌不会跟后台互相顶掉。203
inc/forum.php前台论坛。板块列表、帖子列表、帖子详情、发帖、回复、删除都在这份文件里, * 地址统一是 /forum/xxx:b12=12号板块、p34=34号帖子、new=发帖、reply=回复、act=管理动作。 * 帖子和回复存纯文本,模板里用 nl2br 输出,会员写的 html 不会被当代码执行。332
inc/fun.php全站通用函数库(一套函数服务所有子系统,只差表名与字段配置)815
inc/license.php授权码签发与校验 —— 订单开通时签发授权码、域名绑定与额度、程序端远程校验、下载令牌408
inc/order.php订单层 —— 前台下单、人工审核开通、免费商品自动签发、我的订单列表与详情238
inc/page.php分页结果对象(既能被 {list} 直接循环,又能输出分页条)92
inc/schema.php官网数据层 —— 基础表(商品/授权等级/订单/授权码/下载记录/接口密钥)+ 子系统与字段配置种子 + 按字段配置建内容表781
inc/shop.php商品与下载层 —— 授权等级与定价、商品取数、下载中心与对外目录接口、前台导航563
inc/tpl.php模板引擎(laolicms 标签语法:{list}/{if}/{include}/{page}/变量点语法,编译成 php 缓存)321
inc/user.php前台会员中心。登录、注册、退出、我的精选(收藏 / 评论 / 帖子 / 申请)、每日签到、 * 资料与密码修改都在这一份文件里,地址统一是 /user/动作。 * 会员表就是后台那张 user,role>=1 的账号既能进后台也能在论坛发帖,一个账号走全站。421

授权中心后台 shouquan/admin

文件作用行数
admin/content.php内容管理。所有子系统共用这一页,列表显示哪些列、表单有哪些项,全由「字段配置」决定。 * 地址:content.php?sys=标识&ks=关键词&cid=分类&status=&page=207
admin/dev.php开发者管理 —— 审核开发者投稿的模板 / 插件作品(上架 / 下架 / 驳回), * 查看某位作者名下的接口密钥(只显示前缀与掩码,绝不输出 KEY 明文或 secret)。 * 地址:dev.php?sys=mb|cj&status=&ks=&page= ;查密钥加 &uid=会员ID174
admin/edit.php新增 / 编辑一条内容。表单项目完全由「字段配置」里 in_form=1 的字段生成, * 换任何子系统都是同一套代码,只是字段不同。 * 地址:edit.php?sys=标识&id=内容ID(不带 id 就是新增)182
admin/fields.php字段配置。子系统有哪些列、后台表单怎么渲染、列表/详情/搜索取哪些字段,都在这里改; * 保存后自动建列或改列(sys_build),加新字段不用动代码。 * 地址:fields.php?sys=标识 ;编辑加 &id=字段ID271
admin/global.php后台公共入口(登录鉴权、CSRF、页面框架、菜单、字段控件渲染、上传与批量操作) * 每个后台页面第一句都是 require __DIR__ . '/global.php';793
admin/index.php后台首页(数据概览、各子系统条数、待处理事项、系统信息)126
admin/license.php授权管理 —— 按授权码/域名/商品/状态搜索授权列表,查看授权详情与校验历史, * 追加/删除绑定域名(license_domain_bind、license_domains),手工延期或提前停用、恢复、吊销,复制授权码。 * 地址:license.php?ks=&sys=&status=&page= ;详情加 &id=ID321
admin/logout.php退出后台登录14
admin/order.php订单管理 —— 按状态/子系统/关键词/时间筛选订单列表,查看订单详情, * 审核开通(order_pass:程序签授权码,模板与插件只开通下载)、驳回、批量操作、导出 CSV。 * 地址:order.php?status=&sys=&ks=&d1=&d2=&page= ;详情加 &id=ID298
admin/setting.php站点设置。改的就是 config 表里的键,前台用 guojiz('键名') 读取; * 带 tpl_ 前缀的键是给「模板设置」用的,这里不显示。170
admin/sort.php分类管理。所有子系统共用一张分类表(sort),用 sys 区分,支持两级。 * 地址:sort.php?sys=标识 ;编辑加 &id=分类ID211
admin/stats.php数据统计。展示 visit 表的浏览量趋势、每个子系统的内容数与浏览/收藏/评论合计, * 以及全站浏览最多的十条内容。133
admin/sys.php子系统管理。一套函数通用所有子系统,这里只是登记一个标识、一张内容表和它的字段, * 新建子系统会自动建表;字段在「字段配置」里加,内容在「内容管理」里发。 * 地址:sys.php ;编辑加 ?id=子系统ID241
admin/table.php导航菜单 / 广告位 / 公告 / 单页 / 论坛 / 签到这一批简单表的增删改查,一个文件管多张表, * 每张表要填什么由 global.php 里的 admin_tables() 规格决定。tb 参数走严格白名单,杜绝拖库。 * 地址:table.php?tb=nav|ad|notice|page|sign|forum_board|forum_post|forum_reply ;编辑加 &id=ID291
admin/theme.php模板设置。官网前台的配色与区块开关都来自 template/laoli/set.php, * 这里保存后写进 config 表的 tpl_ 前缀键覆盖默认值,前台用 cmspc('键名') 读取。130
admin/tools.php数据工具。清模板缓存、按字段配置同步数据表、导出 SQL 备份、修复与优化表、清理访问记录。160
admin/upload.php后台上传接口(图片与附件,返回 {code:1,data:{url}})29
admin/user.php会员管理。全站共用一张 user 表,一个账号在论坛、收藏、投稿里通用。 * 地址:user.php?ks=账号&role=&status=&page=211

授权中心接口与安装

文件作用行数
api/catalog.php对外接口 —— 商品目录(程序后台「应用商店」在线拉取模板与插件清单)61
api/download.php对外接口 —— 令牌下载商品包(授权码 + 当天有效令牌,或登录后的会员本人)64
api/latest.php对外接口 —— 版本与更新日志查询(程序后台点「检查更新」时调用)44
api/verify.php对外接口 —— 程序端联网激活与远程校验(提交授权码与域名,返回授权状态、到期时间与下载入口)44
install/demo.php安装演示数据 —— 四套程序的更新包、随程序附带的官方模板与插件、带目录结构的开发文档、公告与管理员账号 * 约束:商品行指向交付包里 uploads/ 下真实存在的 zip;封面用同目录生成的 svg/png,不引外部 CDN / 字体 / 网络请求305
install/demo_doc.php开发文档的正文数据(模板标签全量参考 / 程序文件详解),由 php tools/_dev/doc_build.php 从源码注释里生成, * 改这两篇请改生成脚本里的正文,手工改会被下次生成覆盖。 * 每条:[一级分类, 二级分类, 标题, 摘要, 正文 HTML, 是否口令保护]281
install/index.php官网(授权端)网页安装向导 —— 环境检测 → 数据库与站点信息 → 建表写种子 → 生成配置/目录/锁文件 → 安装完成 * 步骤:step1 环境检测 step2 表单 step3 执行安装(含写库/建账号/写 config.php) step4 完成页319

程序自己会写的几个目录

  • application/cache/:模板编译产物,源文件改动自动重编译,删了会重建。
  • application/plugin/、plugins/:插件目录,后台「插件管理」在线安装时往这里落文件。
  • uploads/image/、uploads/file/、uploads/store/:后台上传的图片、附件与商店包缓存,前台地址由 upurl() 拼。
  • uploads/tool/:在线工具「本地文件」这一类工具的文件目录。后台编辑一条工具,打开方式选「本地文件」, 可以上传文件,也可以把工具代码整段贴进编辑框——两种写法最后都写成 uploads/tool/文件名, 内页由 tool_local() 执行(.php 走 include,.html/.htm 原样输出)。 只认 .php/.html/.htm 三种扩展名,文件名里带 ../ 会被削成纯文件名,代码永远出不了这个目录; 目录里放的是可直接访问的独立文件,所以工具代码要写成内页里的片段,不必再套 html 骨架。 这个目录必须可写,否则上传与贴代码保存不了。

四、哪些文件绝不能公开

  • application/config.php、web/config.php:数据库账号密码、站点地址,只在本机。
  • application/install.lock、web/install.lock:装完请把 install/ 目录整个删掉,留着会被反复访问。
  • application/cache/、web/cache/:模板编译产物与数据缓存,不用备份,删了自动重建。
  • 授权签名密钥(data/license.secret 与配置里的 license_secret):只在签发端,绝不进交付包。
  • 开发用的 tools/(含 tools/_dev/)与本地伪静态入口 router.php:打包脚本会排除,别手工塞回包里。
  • 本篇文档的访问口令本身只存在配置表里,不写进任何文件;前台勾了「口令保护」的文档要靠它才显示正文。

五、改代码前的三条约定

  1. 每个 php 文件顶部保留五行块注释(程序名、作者、本文件作用、文件路径),新加的文件也要写,作用一栏要和实际行为一致。
  2. 函数命名小写下划线,模板可见的公共函数一律放 inc/fun.php(按小节注释分组,开发文档的函数索引就是照小节收的); 只有跟着路由走的取值函数(title_of()、field_html()…)放在 inc/common.php,两处都会被收进函数索引;只在某个后台页用的函数放那个页里。
  3. 前台模板只依赖 fun.php 与 common.php 里这些函数和标签,不要在模板里 new 类或直连数据库; 需要新数据就在后台加一个子系统或字段,模板用 {list 标识 …} 取。
按这篇做完还是卡住,可以把报错截图发到反馈论坛,作者会补充说明。 去发帖提问 或发邮件
上一篇 模板标签全量参考
下一篇已经是最后一条了