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二次开发常用代码

  1. defined('IN_PHPCMS') or exit('No permission resources.');
  2. //第一步:获取模型缓存路径
  3. define('CACHE_MODEL_PATH',CACHE_PATH.'caches_model'.DIRECTORY_SEPARATOR.'caches_data'.DIRECTORY_SEPARATOR);
  4. pc_base::load_app_func('util','content');
  5. class index {
  6. private $db;
  7. function __construct() {
  8. //第二步:获取与数据库相关的配置信息,如:数据表前缀、数据库名、数据库用户名、数据库密码、数据库编码、数据库类型
  9. $this->db = pc_base::load_model('content_model');
  10. $this->_userid = param::get_cookie('_userid');
  11. $this->_username = param::get_cookie('_username');
  12. $this->_groupid = param::get_cookie('_groupid');
  13. }
  14. //首页
  15. public function init() {
  16. if(isset($_GET['siteid'])) {
  17. $siteid = intval($_GET['siteid']);
  18. else {
  19. $siteid = 1;//模型情况下siteid为1
  20. }
  21. $siteid = $GLOBALS['siteid'] = max($siteid,1);
  22. define('SITEID', $siteid);
  23. $_userid = $this->_userid;
  24. $_username = $this->_username;
  25. $_groupid = $this->_groupid;
  26. //SEO
  27. $SEO = seo($siteid);
  28. $sitelist  = getcache('sitelist','commons');
  29. $default_style = $sitelist[$siteid]['default_style'];
  30. $CATEGORYS = getcache('category_content_'.$siteid,'commons');
  31. include template('content','index',$default_style);
  32. }
  33. //内容页
  34. public function show() {
  35. $catid = intval($_GET['catid']);
  36. $id = intval($_GET['id']);
  37. if(!$catid || !$id) showmessage(L('information_does_not_exist'),'blank');
  38. $_userid = $this->_userid;
  39. $_username = $this->_username;
  40. $_groupid = $this->_groupid;
  41. $page = intval($_GET['page']);
  42. $page = max($page,1);
  43. $siteids = getcache('category_content','commons');//获取各栏目所对应的站点id
  44. $siteid = $siteids[$catid];//获取当前栏目所对应的站点id
  45. $CATEGORYS = getcache('category_content_'.$siteid,'commons');//获取当前站点下所有栏目的配置信息
  46. if(!isset($CATEGORYS[$catid]) || $CATEGORYS[$catid]['type']!=0) showmessage(L('information_does_not_exist'),'blank');
  47. $this->category = $CAT = $CATEGORYS[$catid];//获取当前站点下当前栏目的配置信息
  48. $this->category_setting = $CAT['setting'] = string2array($this->category['setting']);
  49. $siteid = $GLOBALS['siteid'] = $CAT['siteid'];//获取当前站点下当前栏目所对应的站点id值
  50. $MODEL = getcache('model','commons');//获取各个模型的配置信息
  51. $modelid = $CAT['modelid'];//获取当前站点下当前栏目所属的模型id,找到了模型,也就找到了要查询的模型表(数据表)
  52. //设置模型表:通过缓存文件获取modelid,然后再通过模型modelid获取对应的模型表及对应的模型附表
  53. $tablename = $this->db->table_name = $this->db->db_tablepre.$MODEL[$modelid]['tablename'];
  54. //设置模型附表
  55. $r = $this->db->get_one(array('id'=>$id));
  56. if(!$r || $r['status'] != 99) showmessage(L('info_does_not_exists'),'blank');
  57. //下面代码获取的是当前模型附表中数据
  58. $this->db->table_name = $tablename.'_data';
  59. //下面代码获取的是当前模型附表中数据
  60. $r2 = $this->db->get_one(array('id'=>$id));
  61. //将模型表数据和模型附表中数据合并在一起
  62. $rs = $r2 ? array_merge($r,$r2) : $r;
  63. //再次重新赋值,以数据库为准
  64. $catid = $CATEGORYS[$r['catid']]['catid'];
  65. $modelid = $CATEGORYS[$catid]['modelid'];
  66. require_once CACHE_MODEL_PATH.'content_output.class.php';
  67. $content_output = new content_output($modelid,$catid,$CATEGORYS);
  68. //将查询出来的数据经模型处理函数处理后放入$data数据中
  69. $data = $content_output->get($rs);
  70. //注意:这行代码非常之重要,主要用来将数组中各个元素转化为变量,数据元素的键名为变量名,数据元素的值为变量值
  71. extract($data);

邓_phpcms_二次开发_创建插件的更多相关文章

  1. 邓_phpcms_二次开发_留言板

    ================================================================= •在 phpcms/modules 目录下创建文件夹,并将其命名为g ...

  2. Revit二次开发之创建风管

      在Revit中,风管用于连接管件,风道末端和机械设备,今天简单尝试了下使用RevitAPI创建风管,现分享下我的方法.   风管从类型上可分为三类:一般风管,软风管和风管占位符:从形状上也分为三类 ...

  3. Qt+QGis二次开发:创建临时图层并添加要素

    开发环境:Win10 + VS2010 + Qt 4.8.6 + QGis 2.14.4 其实本文实现的功能类似于QGis中“添加文本数据图层”的一个简化版,本文不会涉及到对话框的使用,不通过与用户互 ...

  4. AutoCAD.NET二次开发:创建自定义菜单(AcCui)

    从CAD2007之后,Autodesk提供了一个新的程序集AcCui.dll,使用这个程序集,我们可以方便地做一些界面方面的操作,比如创建自定义菜单. 下面介绍一下菜单的创建过程: 1.在项目中添加引 ...

  5. AutoCAD.NET二次开发:创建自定义菜单的两种方法比较

    目前我已经掌握的创建CAD菜单方法有两种: COM方式: http://www.cnblogs.com/bomb12138/p/3607929.html CUI方式: http://www.cnblo ...

  6. AutoCAD.NET二次开发:创建自定义菜单(COM)

    当我们要在CAD中创建自定菜单时,可以引用COM组件来实现. 下面是实现方式: 1.新建类库项目,并引用CAD目录(我这里用的是CAD2008)下的acdbmgd.dll.acmgd.dll,并将引用 ...

  7. SkylineGlobe 如何使用二次开发接口创建粒子效果

    SkylineGlobe在6.6版本,ICreator66接口新增加了CreateEffect方法,用来创建粒子效果对象: 以及ITerrainEffect66对象接口,可以灵活设置粒子效果对象的相关 ...

  8. PHPCMS v9 二次开发_验证码结合Session开发

    本文主要讲解了在V9中使用v9自带验证码并且需要使用session的情况下,多种问题的解决.:).如有问题或者更好的解决办法,希望不吝赐教. 1.前端调用验证码 pc_base::load_sys_c ...

  9. NX二次开发-UFUN创建工程图注释UF_DRF_create_note

    NX9+VS2012 #include <uf.h> #include <uf_drf.h> #include <NXOpen/Annotations_Note.hxx& ...

随机推荐

  1. HTML学习 框架

    iframe 在原来的页面嵌入其他页面 <iframe src="其他页面地址" width="宽" height="高" frame ...

  2. Nginx优化use参数epoll,kqueue,rtsig,eventport,poll

    转自:http://blog.sina.com.cn/s/blog_5eaf88f10100gkrq.html Nginx use参数分析对比 下图对比了poll select epoll和kqueu ...

  3. javascript 之基本数据类型、引用数据类型区别--02

    栈(stack)和堆(heap) stack为自动分配的内存空间,它由系统自动释放:而heap则是动态分配的内存,大小不定也不会自动释放. 基本类型和引用类型 基本类型:存放在栈内存中的简单数据段,数 ...

  4. Micro Templating源码分析

    关于模板,写页面的人们其实一直在用,asp.net , jsp , php, nodejs等等都有他的存在,当然那是服务端的模板. 前端模板,作为前端人员肯定是多少有接触的,Handlebars.js ...

  5. promise 和 async 的用法

    promise // 先构造一个 promise 函数 // resolve 和 reject 都是一个函数 // resolve 在成功时调用 // reject 在失败时调用 function p ...

  6. Mac新手从入门到放弃MongoDB

    1. 简介 MongoDB 是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最 ...

  7. 【费用流】BZOJ1061: [Noi2008]志愿者招募(这题超好)

    1061: [Noi2008]志愿者招募 Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 5291  Solved: 3173[Submit][Stat ...

  8. powershell V6.0登基之:《瘸腿脚本大帝进攻linux!》

    ------[前言]------ 每个ps大版本发布,我都会写个消息. 这次的,主标题就叫:powershell v6.0登基副标题就叫:<瘸腿脚本大帝进攻linux!> ------[p ...

  9. c#快速写本地日志

    很多人的程序在本地运行是好的,但是发布在服务器上后就会有各种各样的问题,但是服务器上又不能直接调试,所以直接读写本地日志成为解决问题的关键,我这个方法,会在发布网站的根目录自动创建 log.txt,并 ...

  10. 自定义MVC框架---第二章

    模型层的封装 模型层封装的原则 介绍: 模型层,也就是Model这一层,用来封装对数据库操作的封装 由于现在主流的编程思想还是OOP面向对象编程,也就是说项目的基本单位就是一个一个类文件,那么如何使用 ...