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. HBase资料

    http://blog.csdn.net/ymh198816/article/details/51244911 https://www.cnblogs.com/JingJ/p/4521245.html ...

  2. Matplotlib初体验

    为一个客户做了关于每个差异otu在时间点上变化的折线图,使用python第一次做批量作图的程序,虽然是很简单的折线图,但是也是第一次使用matplotlib的纪念. ps:在第一个脚本上做了点小的改动 ...

  3. Java Web高级编程(一)

    Servlet 一.创建Servlet类 在Java EE中,Servlet用来接收和响应终端用户的请求.Servlet是所有Web应用程序的核心类,是唯一既可以直接处理和响应用户请求,也可以将处理工 ...

  4. Java中对List<E>按E的属性排序的简单方法

    这是LeetCode上的题目56. Merge Intervals中需要用到的, 简单来说,定义了E为 /** * Definition for an interval. * public class ...

  5. K:二叉树的非递归遍历

    相关介绍:  二叉树的三种遍历方式(先序遍历,中序遍历,后序遍历)的非递归实现,虽然递归方式的实现较为简单且易于理解,但是由于递归方式的实现受其递归调用栈的深度的限制,当递归调用的深度超过限制的时候, ...

  6. 【bird-front】全自动数据表格组件bird-grid

    bird-grid是bird-front前端框架中实现的全自动数据表格组件.组件内部处理数据加载.分页.排序.查询.新增.编辑等一系列操作.让业务表格的开发从繁复的增删查改中脱离出来,编码简洁却又功能 ...

  7. MicroPython支持的开发板:高性能、低成本创客首选

    Python的开放.简洁.黏合正符合了现发展阶段对大数据分析.可视化.各种平台程序协作产生了快速的促进作用.自Python3的发布到现在已有五六年的时间,从刚发布的反对声音到慢慢被接受与喜欢经过了太漫 ...

  8. 原生JavaScript如何解决父元素查找指定类名的子元素的问题

    问题:已知一个元素的类名是right并且这个元素的祖先元素的类名为parent,现在想通过原生JavaScript获得这个类名为right的元素. 我的思路:利用递归.先判断已知的祖先元素(题中的pa ...

  9. django之admin流程

    admin 类复习: class Base(object): def __init__(self,val): self.val = val def func(self): self.test() pr ...

  10. python3之序列化(pickle&json&shelve)

    1.pickle模块 python持久化的存储数据: python程序运行中得到了一些字符串,列表,字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内存中关机断电就丢失数据.python ...