您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
phpcms二次开发新建模块
张豆焕2025-05-20phpcms教程已有人查阅
导读1、新建模块就是phpcms/modules/目录下面新建文件夹,文件夹名即为模块名。2、模块内 一般新建三个文件夹:classes(模块要使用的类放置在这个文件夹,通过pc_base::load_app_classes()函数加载使用 )///
1、新建模块就是phpcms/modules/目录下面新建文件夹,文件夹名即为模块名。
2、模块内 一般新建三个文件夹:classes(模块要使用的类放置在这个文件夹,通过pc_base::load_app_classes()函数加载使用 )///
functions(模块要使用的函数放置在这个文件夹,通过pc_base::load_app_func()函数加载使用)////
template(模块后台管理的模板文件,通过
3、模块的实现机制。
控制器:即模块内的一个php文件,这是个类文件,文件名和文件内定义的类名必须一致。
当我们在浏览器输入index.php?m=模块名&c=控制器名&c=控制器内方法名 时候,首先找到模块文件夹,再找到控制器,然后调用控制器内的方法。
控制器内方法一般有两类:
(1)显示一些内容;
(2)处理提交的内容;
对于“显示一些内容”的方法,首先准备一些模板中需要使用的变量,然后使用include template('','')调用模板。最重要的是模板的调用,模板中需要的变量必须在控制器内的方法中定义。
一般如下:
模板中使用的是标签技术,比如内容模块中,用来显示分类的标签如下:
一个典型的格式如下:
2、模块内 一般新建三个文件夹:classes(模块要使用的类放置在这个文件夹,通过pc_base::load_app_classes()函数加载使用 )///
functions(模块要使用的函数放置在这个文件夹,通过pc_base::load_app_func()函数加载使用)////
template(模块后台管理的模板文件,通过
$this->admin_tpl()方法调用)///
除此之外,经常还有install文件夹和uninstall文件夹。具体参照安装源码包。3、模块的实现机制。
控制器:即模块内的一个php文件,这是个类文件,文件名和文件内定义的类名必须一致。
当我们在浏览器输入index.php?m=模块名&c=控制器名&c=控制器内方法名 时候,首先找到模块文件夹,再找到控制器,然后调用控制器内的方法。
控制器内方法一般有两类:
(1)显示一些内容;
(2)处理提交的内容;
对于“显示一些内容”的方法,首先准备一些模板中需要使用的变量,然后使用include template('','')调用模板。最重要的是模板的调用,模板中需要的变量必须在控制器内的方法中定义。
一般如下:
public function list_type() {
$siteid = SITEID;
$type_id = trim(urldecode($_GET['type_id']));
$type_id = intval($type_id);
if($type_id==""){
$type_id ='0';
}
$setting = getcache('link', 'commons');
$SEO = seo(SITEID, '', L('link'), '', '');
include template('link', 'list_type');//这一句是模板调用,这一句上面的语句基本都是为这一句做准备
}
对于“处理提交的内容”,一般结构是这样的:
public function register() {
$siteid = SITEID;//定义下面所需变量
if(isset($_POST['dosubmit'])){//如果提交按钮按下去了,执行下面的操作,一般就是插入数据库并显示插入成功
if($_POST['name']==""){
showmessage(L('sitename_noempty'),"?m=link&c=index&a=register&siteid=$siteid");
}
if($_POST['url']==""){
showmessage(L('siteurl_not_empty'),"?m=link&c=index&a=register&siteid=$siteid");
}
if(!in_array($_POST['linktype'],array('0','1'))){
$_POST['linktype'] = '0';
}
$link_db = pc_base::load_model(link_model);//加载数据模型
$_POST['logo'] =new_html_special_chars($_POST['logo']);
$logo = safe_replace(strip_tags($_POST['logo']));
$name = safe_replace(strip_tags($_POST['name']));
$url = safe_replace(strip_tags($_POST['url']));
if($_POST['linktype']=='0'){
$sql = array('siteid'=>$siteid,'typeid'=>intval($_POST['typeid']),'linktype'=>intval($_POST['linktype']),'name'=>$name,'url'=>$url);
}else{
$sql = array('siteid'=>$siteid,'typeid'=>intval($_POST['typeid']),'linktype'=>intval($_POST['linktype']),'name'=>$name,'url'=>$url,'logo'=>$logo);
}
$link_db->insert($sql);//执行数据插入操作
showmessage(L('add_success'), "?m=link&c=index&siteid=$siteid");//显示插入成功
} else { //否则就显示页面,等待输入并提交
$setting = getcache('link', 'commons');
$setting = $setting[$siteid];
if($setting['is_post']=='0'){
showmessage(L('suspend_application'), HTTP_REFERER);
}
$this->type = pc_base::load_model('type_model');
$types = $this->type->get_types($siteid);//获取站点下所有友情链接分类
pc_base::load_sys_class('form', '', 0);
$SEO = seo(SITEID, '', L('application_links'), '', '');
include template('link', 'register');
}
}
4、关于模板模板中使用的是标签技术,比如内容模块中,用来显示分类的标签如下:
{pc:content action="lists" catid="15" num="8" order="id DESC" page=""}
那么,如果是我们自己定义的模块呢?应该是这个样子:
{pc:模块名 action="动作函数" catid="15" num="8" order="id DESC" page=""}
模块名不用多说,就是刚才我们定义的文件夹名。那么动作函数是哪来的呢?它定义在模块名/classes目录下的“模块名_tag.class.php”中,同样,这个类文件内主类名也应该是“模块名_tag”,此中定义一个名为“动作函数”的方法。这个方法接收一个参数data,这是一个数组参数,数组的键名就是上面的action,catid,num,order,page等等(这些变量名是可以自己定义的),值就是“动作函数”,15,8,等。一个典型的格式如下:
public function type_lists($data) {
if (!in_array($data['listorder'], array('desc', 'asc'))) {
$data ['listorder'] = 'desc';
}
$sql = array('module'=>ROUTE_M,'siteid'=>$data['siteid']);
$r = $this->type_db->select($sql, '*', $data['limit'], 'listorder '.$data['listorder']);
return new_html_special_chars($r);
}
本文标签:
很赞哦! ()
下一篇:PHPCMS二次开发步骤教程
相关教程
图文教程
PHPCMS V9文件目录结构开发介绍
PHPCMS V9 文件目录结构:根目录| - api 接口文件目录| - caches 缓存文件目录| - configs 系统配置文件目录| - caches_* 系统缓存目录
PHPCMS首页文件位置路径
PHPCMS的首页文件路径是“phpcms/templates/default/content/index.html”;该路径是PHPCMS中的默认首页模板,如果要找到自定义的首页模板
phpcms企业站常用标签和调用
头header.html尾footer.html主页用index.html列表页用list.html单网页用page.html内容页用show.htmlpc:content 代表调用content内容模块
phpcms邮件发送失败的解决方法
1:好的就是使用企业邮箱,(使用普通不知为啥不成功)2:如果本地测试成功,服务器上测试失败,可能是服务器配置禁用fsockopen函数的原因
相关源码
-
(自适应)英文绿色精密模具零件加工五金零件pbootcms外贸网站模板本模板基于PbootCMS开发,为五金零件、精密模具加工等英文外贸企业设计。采用响应式布局,适配各类移动设备,是五金零件企业开展国际贸易的专业展示平台。查看源码 -
WordPress个人博客主题 - wp-Concise-v1.0免费下载wp-Concise-v1.0是一款专为个人博客设计的简约风格主题,采用全宽排版设计理念,注重内容呈现效果。该模板适用于个人随笔、技术分享、生活记录等博客场景,帮助用户打造专业的内容展示空间。查看源码 -
(PC+WAP)绣花刺绣传统手工工艺pbootcms网站源码下载这款基于PbootCMS的网站模板为刺绣和传统手工艺行业设计,采用优雅的布局和精致的细节处理,能够呈现手工艺品的独特韵味和文化内涵。模板结构合理,功能完善,是手工艺从业者展示作品的理想选择。查看源码 -
(PC+WAP)中英双语户外用品帐篷装备pbootcms网站模板下载这款基于PbootCMS开发的中英文双语模板专为户外装备行业设计,适配PC和移动设备。模板采用现代化设计风格,突出户外产品的功能性和实用性,帮助企业建立专业的国际化展示平台。查看源码 -
(自适应响应式)法律咨询律师事务所法务pbootcms源码下载为律师事务所、法律咨询机构设计,特别适合展示法律服务、律师团队和成功案例。采用响应式技术,确保在不同设备上都能提供专业的法律信息展示和咨询服务。查看源码 -
(自适应响应式)环保水净化处理设备阀门等网站源码下载基于PbootCMS内核开发的响应式模板,为水处理设备、空气净化器等环保企业设计,自适应手机端浏览。通过简洁高效的后台管理系统,助力环保科技企业快速建立专业在线展示平台。查看源码
| 分享笔记 (共有 篇笔记) |
