邓_phpcms_二次开发_创建插件
Phpcms_V9 【test】测试
================================================================

================================================================
一:创建数据库和数据表
创建test_model.class.php
数据库模型位于:phpcms/model/目录下
命名规则:test_model.class.php
phpcms/model/test_model.class.php此文件代码:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class test_model extends model {
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = ‘default';
$this->table_name = 'test';
parent::__construct();
}
}
?>
---------------------------------------------------------------------------------------------
二:创建模块目录
路径:phpcms/modules 下创建文件夹【test】(并放入你的控制器类就可以了)
如果你有一个单独的前台模板:需要在phpcms/templates/default下创建一个模块目录来放置前台模板
“default”——为你的风格包名称,默认使用default
..../index.php?m=test(访问test模块示例:)
---------------------------------------------------------------------------------------------
三:开发模块控制器类
为test模块增加一个名为mytest的控制器类
文件路径:phpcms/modules/test/mytest.php
<?php
defined('IN_PHPCMS') or exit('No permiis sion resources');
class mytest
{
public function init(){
echo 'this is init';
}
public function mylist(){
echo 'this is mylist<br>hello world';
}
}
?>
---------------------------------------------------------------------------------
四:创建数据表
create TABLE v9_test(
id int auto_increment primary key,
title char(20)
);
insert into v9_test values(null,'this is a test');
insert into v9_test values(null,'hello world')
-----------------------------------------------------------------------------------
五:修改控制器test/mytest.php
<?php
defined('IN_PHPCMS') or exit('No permission resources');
class mytest {
public function __construct() {
$this->db=pc_base::load_model('test_model','',1);
}
public function init() {
$arr=$this->db->select();
//var_dump($arr);
include template('test','mytest','default');
}
}
?>
------------------------------------------------------------------------
六:创建模板文件mytest.html
文件路径:/mytest.html
=========================================================
=========================================================
=========================================================
路径:phpcms/modules/test/install/config.inc.php
<?php
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
$module = 'test';
$modulename = '测试';
$introduce = '测试模块';
$author = '个人测试';
$authorsite = 'http://www.phpcms.cn';
$authoremail = '';
?>
=========================================================
V9二次开发常用代码
- defined('IN_PHPCMS') or exit('No permission resources.');
- //第一步:获取模型缓存路径
- define('CACHE_MODEL_PATH',CACHE_PATH.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR);
- pc_base::load_app_func('util','content');
- class index {
- private $db;
- function __construct() {
- //第二步:获取与数据库相关的配置信息,如:数据表前缀、数据库名、数据库用户名、数据库密码、数据库编码、数据库类型
- $this->db = pc_base::load_model('content_model');
- $this->_userid = param::get_cookie('_userid');
- $this->_username = param::get_cookie('_username');
- $this->_groupid = param::get_cookie('_groupid');
- }
- //首页
- public function init() {
- if(isset($_GET['siteid'])) {
- $siteid = intval($_GET['siteid']);
- } else {
- $siteid = 1;//模型情况下siteid为1
- }
- $siteid = $GLOBALS['siteid'] = max($siteid,1);
- define('SITEID', $siteid);
- $_userid = $this->_userid;
- $_username = $this->_username;
- $_groupid = $this->_groupid;
- //SEO
- $SEO = seo($siteid);
- $sitelist = getcache('sitelist','commons');
- $default_style = $sitelist[$siteid]['default_style'];
- $CATEGORYS = getcache('category_content_'.$siteid,'commons');
- include template('content','index',$default_style);
- }
- //内容页
- public function show() {
- $catid = intval($_GET['catid']);
- $id = intval($_GET['id']);
- if(!$catid || !$id) showmessage(L('information_does_not_exist'),'blank');
- $_userid = $this->_userid;
- $_username = $this->_username;
- $_groupid = $this->_groupid;
- $page = intval($_GET['page']);
- $page = max($page,1);
- $siteids = getcache('category_content','commons');//获取各栏目所对应的站点id
- $siteid = $siteids[$catid];//获取当前栏目所对应的站点id
- $CATEGORYS = getcache('category_content_'.$siteid,'commons');//获取当前站点下所有栏目的配置信息
- if(!isset($CATEGORYS[$catid]) || $CATEGORYS[$catid]['type']!=0) showmessage(L('information_does_not_exist'),'blank');
- $this->category = $CAT = $CATEGORYS[$catid];//获取当前站点下当前栏目的配置信息
- $this->category_setting = $CAT['setting'] = string2array($this->category['setting']);
- $siteid = $GLOBALS['siteid'] = $CAT['siteid'];//获取当前站点下当前栏目所对应的站点id值
- $MODEL = getcache('model','commons');//获取各个模型的配置信息
- $modelid = $CAT['modelid'];//获取当前站点下当前栏目所属的模型id,找到了模型,也就找到了要查询的模型表(数据表)
- //设置模型表:通过缓存文件获取modelid,然后再通过模型modelid获取对应的模型表及对应的模型附表
- $tablename = $this->db->table_name = $this->db->db_tablepre.$MODEL[$modelid]['tablename'];
- //设置模型附表
- $r = $this->db->get_one(array('id'=>$id));
- if(!$r || $r['status'] != 99) showmessage(L('info_does_not_exists'),'blank');
- //下面代码获取的是当前模型附表中数据
- $this->db->table_name = $tablename.'_data';
- //下面代码获取的是当前模型附表中数据
- $r2 = $this->db->get_one(array('id'=>$id));
- //将模型表数据和模型附表中数据合并在一起
- $rs = $r2 ? array_merge($r,$r2) : $r;
- //再次重新赋值,以数据库为准
- $catid = $CATEGORYS[$r['catid']]['catid'];
- $modelid = $CATEGORYS[$catid]['modelid'];
- require_once CACHE_MODEL_PATH.'content_output.class.php';
- $content_output = new content_output($modelid,$catid,$CATEGORYS);
- //将查询出来的数据经模型处理函数处理后放入$data数据中
- $data = $content_output->get($rs);
- //注意:这行代码非常之重要,主要用来将数组中各个元素转化为变量,数据元素的键名为变量名,数据元素的值为变量值
- extract($data);
邓_phpcms_二次开发_创建插件的更多相关文章
- 邓_phpcms_二次开发_留言板
================================================================= •在 phpcms/modules 目录下创建文件夹,并将其命名为g ...
- Revit二次开发之创建风管
在Revit中,风管用于连接管件,风道末端和机械设备,今天简单尝试了下使用RevitAPI创建风管,现分享下我的方法. 风管从类型上可分为三类:一般风管,软风管和风管占位符:从形状上也分为三类 ...
- Qt+QGis二次开发:创建临时图层并添加要素
开发环境:Win10 + VS2010 + Qt 4.8.6 + QGis 2.14.4 其实本文实现的功能类似于QGis中“添加文本数据图层”的一个简化版,本文不会涉及到对话框的使用,不通过与用户互 ...
- AutoCAD.NET二次开发:创建自定义菜单(AcCui)
从CAD2007之后,Autodesk提供了一个新的程序集AcCui.dll,使用这个程序集,我们可以方便地做一些界面方面的操作,比如创建自定义菜单. 下面介绍一下菜单的创建过程: 1.在项目中添加引 ...
- AutoCAD.NET二次开发:创建自定义菜单的两种方法比较
目前我已经掌握的创建CAD菜单方法有两种: COM方式: http://www.cnblogs.com/bomb12138/p/3607929.html CUI方式: http://www.cnblo ...
- AutoCAD.NET二次开发:创建自定义菜单(COM)
当我们要在CAD中创建自定菜单时,可以引用COM组件来实现. 下面是实现方式: 1.新建类库项目,并引用CAD目录(我这里用的是CAD2008)下的acdbmgd.dll.acmgd.dll,并将引用 ...
- SkylineGlobe 如何使用二次开发接口创建粒子效果
SkylineGlobe在6.6版本,ICreator66接口新增加了CreateEffect方法,用来创建粒子效果对象: 以及ITerrainEffect66对象接口,可以灵活设置粒子效果对象的相关 ...
- PHPCMS v9 二次开发_验证码结合Session开发
本文主要讲解了在V9中使用v9自带验证码并且需要使用session的情况下,多种问题的解决.:).如有问题或者更好的解决办法,希望不吝赐教. 1.前端调用验证码 pc_base::load_sys_c ...
- NX二次开发-UFUN创建工程图注释UF_DRF_create_note
NX9+VS2012 #include <uf.h> #include <uf_drf.h> #include <NXOpen/Annotations_Note.hxx& ...
随机推荐
- A session had already been started – ignoring session_start() 怎么办?
php警告提示A session had already been started – ignoring session_start() 解决方案 访问log日志发现有个这样的警告 主要是在TP框架中 ...
- display:box;display:flex;弹性盒模型
display:box:display:flex:弹性盒模型 非常适用于移动端.PC端高级浏览器,效果也很好. display: -webkit-box; display: -moz-box; dis ...
- MyEclipse过期后怎么破解
方法一:写一个程序生成Subscriptioncode import java.io.*; public class MyEclipseGen { private static final Strin ...
- python之tuple
1.python元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. #创建元组 >>> tuple2 = 123,456,'hel ...
- windows 驱动开发入门——驱动中的数据结构
最近在学习驱动编程方面的内容,在这将自己的一些心得分享出来,供大家参考,与大家共同进步,本人学习驱动主要是通过两本书--<独钓寒江 windows安全编程> 和 <windows驱动 ...
- Windows AD域升级方
前面的博客中我谈到了网络的基本概念和网络参考模型,今天我们来谈企业中常用的技术,Windows AD 域,今天我的笔记将重点讲解Windows AD 域的升级和迁移方法,通过3个小实验进行配置,真实环 ...
- ASP.NET Core中使用IOC三部曲(二.采用Autofac来替换IOC容器,并实现属性注入)
前言 本文主要是详解一下在ASP.NET Core中,自带的IOC容器相关的使用方式和注入类型的生命周期. 这里就不详细的赘述IOC是什么 以及DI是什么了.. emm..不懂的可以自行百度. 目录 ...
- .net 平台下, Socket通讯协议中间件设计思路(附源码)
.net 平台下,实现通讯处理有很多方法(见下表),各有利弊: 序号 实现方式 特点 1 WCF 优点:封装好,方便.缺点:难学,不跨平台 2 RocketMQ,SuperSocket等中间件 优点: ...
- 软件RAID 0
软件RAID 0的实现 RAID 0又称为Stripe或Striping,它代表了所有RAID级别中最高的存储性能.RAID 0提高存储性能的原理是把连续的数据分散到多个磁盘上存取,这样,系统有数据请 ...
- 基于springboot的freemarker创建指定格式的word文档
在web或其他应用中,经常我们需要导出或者预览word文档,比较实际的例子有招聘网站上预览或者导出个人简历,使用POI导出excel会非常的方便,但是如果想导出word,由于其格式控制非常复杂,故而使 ...