邓_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& ...
随机推荐
- 【自问自答】关于 Swift 的几个疑问
感觉自己给自己释疑,也是一个极为有趣的过程.这次,我还新增了"猜想"一栏,来尝试回答一些暂时没有足够资料支撑的问题. Swift 版本是:4.0.3.不同版本的 Swift,可能无 ...
- springMVC(6)---处理模型数据
springMVC(6)---处理模型数据 之前一篇博客,写个怎么获取前段数据:springMVC(2)---获取前段数据,这篇文章写怎么从后端往前端传入数据. 模型数据类型 ...
- mac os x使用Git和bitbucket
简而言之,Git是一个分布式的代码版本管理工具.类似的常用工具还有SVN,CVS. Git相比SVN,CVS,最大的特点也是优点在于提供分布式的代码管理.这不是说SVN等不具有该功能,但就目前来看,G ...
- Head First设计模式之命令模式
一.定义 定义:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化.对请求排队或记录请求日志,以及支持可撤消的操作. 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关 ...
- [js高手之路] html5 canvas教程 - 绘制七巧板
七巧板长什么样? 用canvas把他画出来,其实就是把这7个区域的图形,每个点的坐标找出来,再用moveTo, lineTo连线,设置不同的颜色即可. <head> <meta ch ...
- angular4.0快速import依赖路径
快捷键:ALT + ENTER 直接import对应的依赖路径
- C语言的学习
一.文件的使用方式 r 只读 rb只读 r+ rb+(不带b的为已存在的文本文件,带b的为二进制文件(binary),带+号的为读写文件) w 只写 wb只写 a 追加 ab追加 二.说明 1 ...
- 使用Q进行同步的Promises操作
如何通过使用Q来并发执行多个promises呢? Q(Q(1), Q(2), Q(3)) .then(function (one, two, three) { console.log(one); co ...
- (译)ABP之Abp Session
原文地址:https://aspnetboilerplate.com/Pages/Documents/Abp-Session 介绍 ABP提供IAbpSession接口获取当前用户和租户信息,而不是使 ...
- Java学习笔记25(System类)
System类,系统类,包含的是静态方法,无法创建对象 这里介绍几个简单的方法,其他一些在后边用到的时候会讲 类方法: currentTimeMillis():获取当前毫秒数 package demo ...