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. Git详解之六:Git工具

    Git 工具 现在,你已经学习了管理或者维护 Git 仓库,实现代码控制所需的大多数日常命令和工作流程.你已经完成了跟踪和提交文件的基本任务,并且发挥了暂存区和轻量级的特性分支及合并的威力.(伯乐在线 ...

  2. 关于asp.net web form 和 asp.net mvc 的区别

    asp.net web forms 有什么缺陷? 1.视图状态臃肿:服务器和客户端传输过程中包含了大量的试图状态——在现在的web程序中甚至多达几百kb,而且每次往返都会请求,导致服务器请求带宽增加, ...

  3. zabbix 3.0.4 中文字体替换

    zabbix 对中文支持不是很好,会出现乱码: 从windows系统里 找到字体包:如图: 拷贝到zabbix-server里面,注意,把文件名改成小写: 我linux 是centos7.2版本 [r ...

  4. linux apache虚拟主机配置(基于ip,端口,域名)

    配置环境: linux版本:Centos6.4 httpd版本: [root@centos64Study init.d]# pwd/etc/init.d[root@centos64Study init ...

  5. Invalid bound statement (not found): com.shizongger.chapter2.mapper.UserMapper.insertUser 解决方案

    在配置MyBatis时报错信息如下: Invalid bound statement (not found): com.shizongger.chapter2.mapper.UserMapper.in ...

  6. Upgrade with the Gradle Wrapper, gradlew升级

    springboot 2.0需要gradle 1+, 而自动构建的都是3.+,手动升级如下 Upgrade with the Gradle Wrapper If your existing Gradl ...

  7. 浅析mongodb

    当爬取数据时候,我们可能需要缓存大量的数据,但是又无须任何复杂的连接操作,因此我们将选用NoSQL数据库,这种数据库比传统的关系型数据库更易于操作,这里我想主要说一下目前非常流行的MongoDB作为缓 ...

  8. linux系统编程:IO读写过程的原子性操作实验

    所谓原子性操作指的是:内核保证某系统调用中的所有步骤(操作)作为独立操作而一次性加以执行,其间不会被其他进程或线程所中断. 举个通俗点的例子:你和女朋友OOXX的时候,突然来了个电话,势必会打断你们高 ...

  9. InnoDB锁机制

    1. 锁类型 锁是数据库区别与文件系统的一个关键特性,锁机制用于管理对共享资源的并发访问. InnoDB使用的锁类型,分别有: 共享锁(S)和排他锁(X) 意向锁(IS和IX) 自增长锁(AUTO-I ...

  10. IdentityServer Topics(2)- 定义资源

    您通常在系统设计中的第一件事就是您要保护的资源. 这可能是您的用户的身份信息,如个人资料数据或电子邮件地址,或访问API. 您可以使用C#对象模型定义资源(硬编码),或从数据存储中加载它们. IRes ...