您现在的位置是:首页 > cms教程 > PbootCMS教程PbootCMS教程
pbootcms菜单二次开发教程
沛菡2024-12-06PbootCMS教程已有人查阅
导读最近再用PbootCMS做一些二次开发,开发涉及到【菜单】【权限】等等,做一个简单的记录,方便后期快速理清开发思路。
最近再用PbootCMS做一些二次开发,开发涉及到【菜单】【权限】等等,做一个简单的记录,方便后期快速理清开发思路。
一、改为Mysql
对于PbootCMS用来二次开发,就不要用sqlite来开发了。
修改文件:config/database.php
二、开放系统菜单
默认的系统是没有【系统菜单】功能的,需要改数据库。
修改数据库:ay_menu 数据表,系统菜单的状态改为:1
重新登录系统:
三、图标的使用
PbootCMS使用的是 fontawesome 字体图标库,该图标库收录了675个图标。
http:// .fontawesome.com.cn/faicons/
四、新建目录
例如我们新建一个【续费提醒】模块:
再次增加一个【续费客户】菜单:
重新登录后,就可以看到侧栏菜单。
五、新建控制器
默认情况,我们新建模块,需要在 apps/admin/controller 目录下新建控制器
例如:RenewalController.php
配置好命名空间后即可访问。
但是我们看上面的配置都是分模块的,例如:content,member,system,这个在哪里配置呢?
分模块配置,需要单独的配置路由:
位置:apps / common / route.php
六、get 函数
在使用PbootCMS进行二次开发的时候,经常会看到使用 get 函数,例如:
然后是这个 filter 方法:
一、改为Mysql
对于PbootCMS用来二次开发,就不要用sqlite来开发了。
修改文件:config/database.php
二、开放系统菜单
默认的系统是没有【系统菜单】功能的,需要改数据库。
修改数据库:ay_menu 数据表,系统菜单的状态改为:1
重新登录系统:
三、图标的使用
PbootCMS使用的是 fontawesome 字体图标库,该图标库收录了675个图标。
http:// .fontawesome.com.cn/faicons/
四、新建目录
例如我们新建一个【续费提醒】模块:
再次增加一个【续费客户】菜单:
重新登录后,就可以看到侧栏菜单。
五、新建控制器
默认情况,我们新建模块,需要在 apps/admin/controller 目录下新建控制器
例如:RenewalController.php
配置好命名空间后即可访问。
但是我们看上面的配置都是分模块的,例如:content,member,system,这个在哪里配置呢?
分模块配置,需要单独的配置路由:
位置:apps / common / route.php
六、get 函数
在使用PbootCMS进行二次开发的时候,经常会看到使用 get 函数,例如:
$id = get('id', 'int');
$mcode = get('mcode', 'var');
$keywords = get('keywords', 'vars');
通过该 get 函数,可以用于接收参数,并且制定类型,具体函数类型:core / function / helper.php然后是这个 filter 方法:
function filter($varname, $condition)
{
// 变量名称文本
if (array_key_exists($varname, $condition) && $condition[$varname]) {
$vartext = $condition[$varname];
} else {
$vartext = $varname;
}
// 数据源
if (array_key_exists('d_source', $condition)) {
switch ($condition['d_source']) {
case 'post':
$data = @$_POST[$varname];
break;
case 'get':
$data = @$_GET[$varname];
break;
case 'cookie':
$data = @$_COOKIE[$varname];
break;
case 'session':
$data = session($varname);
break;
case 'both':
$data = @$_POST[$varname] ?: @$_GET[$varname];
break;
case 'string':
$data = $varname;
default:
error($vartext . '数据获取方式设置错误!');
}
// 去空格
if (is_string($data))
$data = trim($data);
} else {
$data = $varname; // 没有数据源指定时直接按照字符串过滤处理
}
// 数据为空时,进行是否允许空检测
if (! $data && array_key_exists('d_none', $condition) && $condition['d_none'] === false) {
error($vartext . '不能为空!');
}
// 判断是否强制检测,为true时,意味着如果数据不满足要求直接报错,否则返回null
if (array_key_exists('d_require', $condition) && $condition['d_require'] == true) {
$require = true;
} else {
$require = false;
}
// 数据类型检测
if (array_key_exists('d_type', $condition)) {
switch ($condition['d_type']) {
case 'int':
if (! preg_match('/^[0-9]+$/', $data)) {
$err = '必须为整数!';
}
break;
case 'float':
if (! is_float($data)) {
$err = '必须为浮点数!';
}
break;
case 'num':
if (! is_numeric($data)) {
$err = '必须为数字!';
}
break;
case 'letter':
if (! preg_match('/^[a-zA-Z]+$/', $data)) {
$err = '只能包含字母!';
}
break;
case 'var':
if (! preg_match('/^[\w\-\.]+$/', $data)) {
$err = '只能包含字母、数字、划线、点!';
}
break;
case 'bool':
if (! is_bool($data)) {
$err = '必须为布尔类型!';
}
break;
case 'date':
if (! strtotime($data)) {
$err = '必须为日期类型!';
}
break;
case 'array':
if (! is_array($data)) {
$err = '必须为数组类型!';
}
break;
case 'object':
if (! is_object($data)) {
$err = '必须为对象类型!';
}
break;
case 'vars':
if (! preg_match('/^[\x{4e00}-\x{9fa5}\w\-\.,\s]+$/u', $data)) {
$err = '只能包含中文、字母、数字、横线、点、逗号、空格!';
}
break;
default:
if ($condition['d_type'])
error($vartext . '数据类型设置错误!');
}
}
// 非必须或必须但无错误时执行
if ((! $require || ($require && ! isset($err)))) {
// 正则匹配
if (array_key_exists('d_regular', $condition)) {
if (! preg_match($condition['d_regular'], $data)) {
$err = '不符合正则表达式规则!';
}
}
// 较大值匹配
if (array_key_exists('d_max', $condition)) {
if (is_numeric($data)) {
if ($data > $condition['d_max']) {
$err = '不能大于' . $condition['d_max'];
}
} else {
if (mb_strlen($data) > $condition['d_max']) {
$err = '长度不能大于' . $condition['d_max'];
}
}
}
// 小值匹配
if (array_key_exists('d_min', $condition)) {
if (is_numeric($data)) {
if ($data < $condition['d_min']) {
$err = '不能小于' . $condition['d_min'];
}
} else {
if (mb_strlen($data) < $condition['d_min']) {
$err = '长度不能小于' . $condition['d_min'];
}
}
}
}
// 如果为必须且有错误,则显示错误,如果非必须,但有错误,则设置数据为null
if ($require && isset($err)) {
error($vartext . $err);
} elseif (isset($err)) {
$data = null;
}
// 如果设置有默认值,默认值
if (array_key_exists('d_default', $condition)) {
$data = (! is_null($data)) ? $data : $condition['d_default'];
}
if (is_string($data)) {
$data = trim($data); // 去空格
$data = preg_replace_r('/(x3c)|(x3e)/', '', $data); // 去十六进制括号
$data = preg_replace_r('/pboot:if/i', 'pboot@if', $data); // 过滤插入cms条件语句
$data = preg_replace_r('/pboot:sql/i', 'pboot@sql', $data); // 过滤插入cms条件语句
$data = preg_replace_r('/GET\[/i', 'GET@[', $data);
$data = preg_replace_r('/POST\[/i', 'POST@[', $data);
}
// 销毁错误
unset($err);
// 返回收据
return escape_string($data);
}
到此,基本上就可以用PbootCMS做二次开发了。
本文标签:
很赞哦! ()
相关教程
图文教程
PbootCMS留言自定义表单调用方法
在 PBootCMS 中,你可以通过自定义表单和标签来实现留言功能。以下是详细的步骤和示例代码,帮助你在全站任意地方使用留言表单和留言记录列表。
pbootcms后台菜单怎么开启
超级管理后台登录后台,手动访问这个链接(http://您的域名/admin.php?p=/Menu/index)打开菜单列表,找到系统管理-系统菜单点击状态启用,接着去重新登录后即可。
PbootCMS友情链接标签使用方法示例
PbootCMS中的友情链接标签非常灵活,适用于多种场景,可以帮助你丰富网站的内容和功能。以下是一些常见的应用场景:首页展示合作伙伴: 在首页的某个区域展示合作伙伴的Logo和链接
PbootCMS添加栏目时“该内容栏目编号已经存在,不能再使用”怎么
当你在 PbootCMS 中尝试添加新的栏目时,如果遇到“该内容栏目编号已经存在,不能再使用”的错误提示,通常是因为数据库中的栏目编号(scode)已经存在重复值。
相关源码
-
(自适应)英文电子芯片电子元件网站pbootcms模板下载基于PbootCMS内核开发的电子元件类企业专用模板,采用响应式设计技术,适配电子元器件、集成电路、半导体等行业的品牌展示与技术文档发布需求。前端布局针对芯片参数表格与产品规格书展示进行深度优化。查看源码 -
(自适应)绿色LED灯具照明灯饰灯光灯泡pbootcms网站源码下载本模板基于PbootCMS内核开发,为LED照明、灯具制造及相关光电技术企业量身打造。设计充分考虑了照明行业的展示需求,从产品陈列到技术说明,从光源展示到工程案例,每一个细节都体现出专业照明行业的特点。查看源码 -
(自适应)餐具英文外贸生活用品带下载功能网站模板免费下载为餐具及生活用品外贸企业打造的响应式网站模板,基于PbootCMS内核开发。突出产品展示与多语言支持特性,通过自适应设计确保更好客户在手机、平板、电脑等设备上获得一致浏览体验。查看源码 -
(PC+WAP)绿色硅胶橡胶玩具制品营销型网站源码下载为硅胶橡胶制品及玩具行业打造的营销型网站模板,采用PbootCMS内核开发,通过模块化设计实现产品参数、安全认证、应用场景等专业内容的可视化呈现,助力企业建立可信赖的线上展示平台。查看源码 -
(自适应响应式)WORDwps办公资源教程资讯网站模板下载基于PbootCMS内核开发的响应式网站模板,为办公教程、WPS技巧分享、职场技能培训等场景打造。模板内置标准化文档分类体系,支持图文/视频教程混合展示,满足现代办公知识传播需求。查看源码 -
(PC+WAP)蓝色智能环保机械设备网站营销型pbootcms模板下载本模板基于PbootCMS系统开发,为环保设备制造企业设计,特别适合展示环保机械、智能装备等产品。采用响应式技术,确保各类设备参数和技术方案在不同终端上都能清晰展示。查看源码
| 分享笔记 (共有 篇笔记) |

