立即注册  找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 16|回复: 0

Prain清雨博客系统开发文档

[复制链接]

Prain清雨博客系统开发文档

[复制链接]

187

主题

103

回帖

1203

积分

管理员

积分
1203
admin

187

主题

103

回帖

1203

积分

管理员

积分
1203
2025-1-7 15:19:52 | 显示全部楼层 |阅读模式
清雨博客
[url=]返回[/url]登录

Prain清雨博客系统开发文档


下载


环境要求

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}
$为前缀

输出其它内容
{#EXAMPLE}
{#time()} {# time()}
{#$example > 10 ? '真' : '假'}
#为前缀,后面可以为常量、方法或php原生语句,#代表输出,会被编译成echo,后面是echo的内容。

插入url链接
{url admin}
{url admin/article}
{url admin/article/editor/$article.id}
url为前缀,后面为网址链接(网站链接前面不能为斜杠),网址中支持使用变量(只能使用变量,不支持常量),这种方式支持伪静态。
举例:{url admin}如果伪静态开启,则链接实际为/admin,伪静态关闭,则链接实际为/?admin

IF判断
{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更加方便,形式更好。
标签:全局常量
标签
返回类型
说明

V
string
系统版本号

ROOT
string
根目录的绝对路径

HOME
string
根目录的相对路径

URL
string
根目录的相对路径与伪静态结合

DB
string
数据目录的绝对路径

EXT
string
扩展目录的绝对路径

LIB
string
类库目录的绝对路径

TPL
string
当前主题模板的相对路径

TPLPATH
string
当前主题模板的绝对路径,包含项目的整个路径

TPL_STYLE
string
当前主题模板的style相对路径

TPL_IMG
string
当前主题模板的img相对路径

LIB_STYLE
string
公共style相对路径

LOGIN
bool
登陆状态,true为登录 false为未登录

DEBUG
string
0:线上模式(无错)1:调试模式(无错+日志)2:开发模式(报错+日志)
标签:全局变量
标签
返回类型
说明

$host
string
博客网址

$conf
array
网站配置信息

$tpl
Class
模板类

$util
Class
文件操作类

$ini
array
用户配置

$method
string
请求方式:POST、GET

$url
string
当前地址

$ajax
bool
是否为Ajax请求

$page
string
当前页面(index、category、tag、search、page、prompt、admin)

$extList
array
已安装的扩展列表

$articleList
array
文章列表

$categoryList
array
分类列表

$tagList
array
标签列表

$navbarList
array
导航菜单列表

$linkList
array
友情链接列表

$settingPage
string
当前应用的设置页,存在为设置页路径,不存在为空字符串
标签:网站配置
标签
返回类型
说明

{$conf.title}
string
网站的title标题

{$conf.name}
string
网站头部标题

{$conf.intro }
string
网站描述

{$conf.mood}
string
心情记录

{$conf.key}
string
SEO网站关键字

{$conf.desc}
string
SEO网站描述

{$conf.brief}
int
新建文章时的描述限制字数

{$conf.password}
string
网站登录密码

{$conf.tpl}
string
主题模板

{$conf.compile}
bool
模板自动编译

{$conf.debug}
int
等同于全局变量DEBUG

{$conf.rewrite}
bool
伪静态

{$conf.article.paging}
int
文章分页设置,每页数量

{$conf.article.count}
int
文章总数量

{$conf.comment.restrict}
int
评论限制设置,每日限制的条数

{$conf.comment.paging}
int
评论分页设置,每页数量

{$conf.comment.count}
int
评论总数量

{$conf.vcode.open}
bool
验证码开启

{$conf.vcode.width}
int
验证码宽度

{$conf.vcode.height}
int
验证码高度

{$conf.vcode.length}
int
验证码字符串数量

{$conf.icp}
string
ICP备案号

{$conf.prn}
string
公安备案号

{$conf.views}
int
网站浏览量

{$conf.blacklist}
string
IP黑名单

{$conf.tag}
array
标签集合

{$conf.ext}
array
扩展集合

{$conf.category}
array
分类集合

{$conf.navbar}
array
导航菜单集合

{$conf.link}
array
友情链接集合

{$conf.js}
string
JS脚本代码

{$conf.install}
bool
系统是否已安装

{$conf.db.version}
string
系统db版本
标签:首页
标签
返回类型
说明

{$pageNum}
int
当前页码,默认为1

{$pageSize}
int
文章每页条数

{$article.count}
int
文章总数量

{$article.list}
array
文章列表,字段详情请看下面的【文章详情页】

{$article.paging.html}
string
文章分页的HTML

{$article.paging.count}
int
文章分页的文章总条数

{$article.paging.currentPage}
int
文章分页的当前页面

{$article.paging.countPage}
int
文章分页的总页码

{$article.paging.pageSize}
int
文章分页的每页条数
标签:分类页
标签
返回类型
说明

{$cid}
string
分类ID

{$category}
array
分类对象,字段详情请看下面的【分类】

{$pageNum}
int
当前页码,默认为1

{$pageSize}
int
文章每页条数

{$article.count}
int
文章总数量

{$article.paging}
string
文章分页的HTML

{$article.list}
array
文章列表,字段详情请看下面的【文章详情页】

{$article.paging.html}
string
文章分页的HTML

{$article.paging.count}
int
文章分页的文章总条数

{$article.paging.currentPage}
int
文章分页的当前页面

{$article.paging.countPage}
int
文章分页的总页码

{$article.paging.pageSize}
int
文章分页的每页条数
标签:标签页





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|学无止境

GMT+8, 2026-9-12 11:20 , Processed in 0.280051 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表