邓_phpcms_二次开发_创建插件

Phpcms_V9 【test】测试 ===================================================

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