下载
环境要求
PHP版本: PHP7.4+ 推荐PHP8.0+
安装
1. 服务器:推荐使用阿里云服务器,比较稳定,传送阵:阿里云服务器 2. 环境部署:推荐使用宝塔面板来安装,一键PHP环境部署,送你10850元礼包,点我领取 3. 将下载的程序代码解压到你的网站根目录,直接运行你的网站,会自动跳转到安装页面
4. 在安装页面输入相关信息和登录密码,点击提交后会进入首页
警告:本程序严禁用于非法用途,请遵守相关法律法规,使用者因违反本声明的规定而触犯中华人民共和国法律的,一切后果自己负责,本站不承担任何责任。
升级
进入后台,点击网站首页按钮,可查看系统的当前版本号,如果当前版本较低时,会自动弹出新版本更新提示窗,点击更新即可,升级前请做好网站备份,避免升级造成不必要的数据损失。
提示1:系统同步也是更新的一种,会与官网最新的核心文件同步,从而达到系统版本的更新。
提示2:数据库版本同步指的是你当前的数据库版本将与官方最新版本同步,这里的版本主要指的是数据字段结构,系统升级有时候会增加数据库字段,一般在线更新的时候会自动更新,这里的数据库版本并不是指的数据库数据同步哦,官网并不会收集你数据库的数据。
文件结构
┌─index.php 首页入口│├─db 数据库│ ├─article 文章列表数据│ ├─comment 文章评论数据│ ├─upload 文章上传数据│ ├─article.php 文章列表│ ├─conf.php 网站配置│ ├─error.php 错误日志列表│ ├─ini.php 用户配置│ └─list.php 数据库字段列表│├─ext 扩展│├─lib 函数类库│ ├─admin 后台管理页面│ │ ├─article.create.php 文章创建页│ │ ├─article.editor.php 文章编辑页│ │ ├─article.php 文章管理页│ │ ├─category.php 分类设置页│ │ ├─error.php 错误日志页│ │ ├─ext.php 扩展管理页│ │ ├─footer.php 模板尾部文件│ │ ├─header.php 模板头部文件│ │ ├─index.php 后台首页│ │ ├─install.php 系统安装页│ │ ├─link.php 友情链接页│ │ ├─login.php 后台登录页│ │ ├─navbar.php 后台登录页│ │ ├─prompt.php 提示页│ │ ├─setting.php 基础设置页│ │ └─tpl.php 模板管理页│ ││ ├─style 公共样式│ │ ├─admin.css 后台样式│ │ ├─fk.css fk样式│ │ ├─common.js 公共脚本│ │ └─logo.svg LOGO图标│ ││ ├─common.php 公共方法│ ├─file.util.class.php 文件操作类│ ├─fk.class.php fk标记语言类│ ├─function.php 函数方法集合│ ├─tpl.class.php 模板编译类│ ├─upload.class.php 上传类│ └─vcode.class.php 验证码类│└─tpl 主题模板 └─default ├─style 样式文件夹 │ └─main.css 样式 │ ├─conf.php 模板配置文件 ├─footer.php 模板尾部文件 ├─header.php 模板头部文件 ├─icon.png 模板缩略图 ├─index.php 首页 ├─page.php 详情页 ├─prompt.php 提示页 ├─search.php 搜索页 ├─category.php 分类页 ├─sidebar.php 模板侧栏文件 └─tag.php 标签页
主题模板开发
说明- 主题模板用于定制清雨的界面,为其提供布局效果及样式
- 主题模板在tpl文件夹下
文件结构default 主题模板文件夹,名称不能包含中文,不能为纯数字,应放在tpl文件夹中 │----------------------------------------------------------- ├─style 样式文件夹,存放css、js等文件(非必须) ├─img 图片文件夹,存放图片文件(非必须) │----------------------------------------------------------- ├─conf.php 模板配置文件(必须) ├─icon.png 模板缩略图(必须) ├─index.php 首页(必须) ├─page.php 详情页(必须) ├─prompt.php 提示页(必须) ├─header.php 模板头部文件(非必须) ├─footer.php 模板尾部文件(非必须) ├─login.php 登录页(非必须) ├─search.php 搜索页(非必须) ├─category.php 分类页(非必须) ├─tag.php 标签页(非必须) ├─sidebar.php 模板侧栏文件(非必须) ├─install.php 安装文件(非必须) └─uninstall.php 卸载文件(非必须)开发规范- 引用的css、js等文件应统一放在style文件夹中
- 图片文件应统一放在img文件夹中
- 尾部文件footer.php中应注明清雨的版权,指定链接为:https://prain.cn
模板文件说明除了文件结构中标注的必须文件,其它的非必须文件不一定要存在,看你如何开发了。
- category.phptab.phpsearch.php不存在时,将默认调用index.php模板
- login.php不存在时将默认调用/lib/admin/login.php
- sidebar.php属于页面引用的侧栏公共文件,如果你的模板并不存在侧栏,也无需创建
install文件说明该文件可有可无,如果存在该文件,install安装文件会在使用新主题的时候执行一次,一般用于提前创建好数据库之类的操作。
uninstall文件说明该文件可有可无,如果存在该文件,uninstall卸载文件会在使用新主题的时候执行一次,一般用于清除旧主题造成的数据垃圾。
conf配置文件说明<?php // 配置文件 return array ( 'id' => '主题模板的ID', 'type' => '应用类型,主题为tpl,扩展为ext', 'author' => '作者,开发者的账号', 'name' => '主题模板的名称', 'intro' => '主题模板的简述', 'price' => '主题模板价格,0为免费,仅支持2位小数', 'home' => '主题模板的主页', 'version' => '版本号,格式为1.0.0', 'limit' => '限制清雨的最低版本号,格式为1.0.0', 'depend' => '依赖的应用ID,空格隔开' );?>自定义页面和URL链接如果清雨提供的默认页面并不能满足你的需求,那么你可以通过main.php文件来设置更多的页面,main.php在主题模板中可有可无,如果存在的话,它会被当做公共文件引入到系统中,不管进入任何页面,都会优先执行main.php的代码,所以main.php中不但可以设置更多的页面,引入更多的自定义类库,你甚至可以完全覆盖prain自身的页面业务逻辑。
如何编写main.php中的代码呢?我们举个例子,当你需要设置某个自定义的页面时,例如一个demo页面,你想访问的链接是:https://example.com/demo,这个时候demo的页面名称可以通过$page来获得,$page是个全局变量,可以获得网址/后面的第一个参数(prain中的url参数是通过/来分割的),有了$page就可以很方便的写demo页面的逻辑,以及引用模板中的demo.php页面,示例如下:
main.php文件
<?php// demo页面if($page == 'demo'){ $info = [ 'title' => '静默的流年', 'content' => '站在青春的夕阳下,感受着过往,留下浅浅的笑靥,或许这就是青春的流逝吧!' ]; include $tpl->view('demo');}?>
demo.php文件
<h3> {$info.title} </h3><p> {$info.content} </p>上面的示例是不是很简单?main.php很强大,可以内置任何你想要的功能或页面,上面我们说到了$page这个变量,默认它获取的是URL第1个参数,如果你需要获取第2个、第3个参数,那么你可以通过get()这个方法来获取,在prain中,get()用来获取url上的参数,post()用于获取form表单提交过来的参数,这两个方法能帮助你便捷的处理表单操作。
这两个方法位于lib/function.php中,function.php包含了开发者常用的封装函数,具体请查阅该文件,也可以查阅本文档中的【函数列表】
主题模板也继承了扩展的开发方式,支持main.php和common.php文件的编写,具体可参考本文档【扩展应用开发】
主题中的标签说明上面的demo.php示例中我们用到了花括号来输出变量内容,这是prain内置的模板编写能力,{$info.title}等同于<?php echo $info['title'];?>,当然你也可以将{$info.title}写成{$info['title']}(我想没人会这么费力不讨好),具体请看下面的模板语法。
编写模板时我们常常使用花括号来输出内容,它的工作原理是将你的主题模板编译成php原生格式,编译后的文件会放入当前主题模板的compile文件夹中,所以我们在开发主题模板时不要使用compile文件夹来存放主题文件。
下面是关于模板标签的一下用法。
主题模板语法标题
语法
说明
{#EXAMPLE}
{#time()} {# time()}
{#$example > 10 ? '真' : '假'}
#为前缀,后面可以为常量、方法或php原生语句,#代表输出,会被编译成echo,后面是echo的内容。
{url admin}
{url admin/article}
{url admin/article/editor/$article.id}
url为前缀,后面为网址链接(网站链接前面不能为斜杠),网址中支持使用变量(只能使用变量,不支持常量),这种方式支持伪静态。
举例:{url admin}如果伪静态开启,则链接实际为/admin,伪静态关闭,则链接实际为/?admin
{if $example > 10} 内容1 {/if}
{if $example > 10} 内容1 {else} 内容2 {/if}
{if $example > 10} 内容1 {elseif $example > 25} 内容2 {else} 内容3 {/if}
{if $example > 10 ? '内容'}
{if $example > 10 ? '小明' : '小红'}
{if $example > 10 : 内容}
{if $example > 10 : 小明 : 小红}
简单的if语句无需使用括号,多条件判断可以使用。
{if 条件 ? 为真内容 : 为假内容}三元运算,使用PHP原生写,字符串需要使用引号包裹,变量随意,支持$user.avatar这种写法。
{if 条件 : 为真内容 : 为假内容}与问号写法的不同是输出语句可以直接为字符串,不需要用引号,支持内嵌变量,
{if 条件 : 为真内容}与上面一样,只是没有为假的内容输出
{foreach $articleList} <p> 条目:{$index} </p> <p> KEY:{$key} </p> <p> {$item.title} </p> <p> {$item.intro} </p>{/foreach}
{foreach $articleList as $article} <h3> {$article.title} </h3> <p> {$article.intro} </p>{/foreach}
{foreach $articleList as $name => $article} <h3> URL的名称:{$name} </h3> <h3> {$article.title} </h3> <p> {$article.intro} </p>{/foreach}
支持这三种遍历方式,这里请注意,只有第一种foreach方式内置三个变量,分别如下:
$index 表示当前条目,从0开始递增
$key 表示当前数组的Key
$item 表示当前数组的Value
{include header}
{include bbs/list}
{include tpl header}
{include admin header}
include 指令常用于引入模板,一处编写,多处引用,降低开发成本。
header 表示为当前目录中的header.php文件。
bbs/list 表示当前目录中bbs文件夹下的list.php文件。
tpl header 有tpl前缀,表示当前主题模板根目录下的header.php文件,常用于开发前端扩展中的页面编写。
admin header 有admin前缀,表示后台模板主题根目录下的header.php文件,常用于开发后端扩展中的页面编写。
{{ $info = [ 'title' => '静默的流年', 'content' => '留下浅浅的笑靥,或许这是青春的流逝!' ]; $info['author'] = '闫立峰'; echo $info['title']; echo $info['content']; echo $info['author'];}}
{{ $info = [ 'title' => '静默的流年', 'content' => '留下浅浅的笑靥,或许这是青春的流逝!' ]; $info.author = '闫立峰'; echo $info.title; echo $info.content; echo $info.author;}}
当我们需要在模板文件中编写很长的php原生代码时,我们可以用两个花括号来写,当然你也可以继续使用原生的<?php ?>来写。
但是,上面的$info.title会被编译成$info['title'],所以说双花括号中写php更加方便,形式更好。
标签:全局常量标签
返回类型
说明
0:线上模式(无错)1:调试模式(无错+日志)2:开发模式(报错+日志)
标签:全局变量标签
返回类型
说明
当前页面(index、category、tag、search、page、prompt、admin)
当前应用的设置页,存在为设置页路径,不存在为空字符串
标签:网站配置标签
返回类型
说明
标签:首页标签
返回类型
说明
{$article.paging.currentPage}
{$article.paging.countPage}
{$article.paging.pageSize}
标签:分类页标签
返回类型
说明
{$article.paging.currentPage}
{$article.paging.countPage}
{$article.paging.pageSize}
标签:标签页