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. 【自问自答】关于 Swift 的几个疑问

    感觉自己给自己释疑,也是一个极为有趣的过程.这次,我还新增了"猜想"一栏,来尝试回答一些暂时没有足够资料支撑的问题. Swift 版本是:4.0.3.不同版本的 Swift,可能无 ...

  2. springMVC(6)---处理模型数据

    springMVC(6)---处理模型数据 之前一篇博客,写个怎么获取前段数据:springMVC(2)---获取前段数据,这篇文章写怎么从后端往前端传入数据. 模型数据类型             ...

  3. mac os x使用Git和bitbucket

    简而言之,Git是一个分布式的代码版本管理工具.类似的常用工具还有SVN,CVS. Git相比SVN,CVS,最大的特点也是优点在于提供分布式的代码管理.这不是说SVN等不具有该功能,但就目前来看,G ...

  4. Head First设计模式之命令模式

    一.定义 定义:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化.对请求排队或记录请求日志,以及支持可撤消的操作. 主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关 ...

  5. [js高手之路] html5 canvas教程 - 绘制七巧板

    七巧板长什么样? 用canvas把他画出来,其实就是把这7个区域的图形,每个点的坐标找出来,再用moveTo, lineTo连线,设置不同的颜色即可. <head> <meta ch ...

  6. angular4.0快速import依赖路径

    快捷键:ALT + ENTER 直接import对应的依赖路径

  7. C语言的学习

    一.文件的使用方式 r  只读  rb只读  r+ rb+(不带b的为已存在的文本文件,带b的为二进制文件(binary),带+号的为读写文件) w 只写 wb只写 a 追加  ab追加 二.说明 1 ...

  8. 使用Q进行同步的Promises操作

    如何通过使用Q来并发执行多个promises呢? Q(Q(1), Q(2), Q(3)) .then(function (one, two, three) { console.log(one); co ...

  9. (译)ABP之Abp Session

    原文地址:https://aspnetboilerplate.com/Pages/Documents/Abp-Session 介绍 ABP提供IAbpSession接口获取当前用户和租户信息,而不是使 ...

  10. Java学习笔记25(System类)

    System类,系统类,包含的是静态方法,无法创建对象 这里介绍几个简单的方法,其他一些在后边用到的时候会讲 类方法: currentTimeMillis():获取当前毫秒数 package demo ...