phpcms 的二次开发

phpcms V9 二次开发 目录结构图如下: 在phpcms的具

 

             phpcms V9 二次开发

 

 

 

    目录结构图如下:

 

        

 

 

 

 

 

phpcms的具体的modules目录下就是,具体的项目模块了。

 

 

 

 

 

classes 为模块类库包

functions 为模块函数库包

templates 为模板包,这里通常放置含有权限控制的控制器模板,也就是后台模板。

 

前台模板放在phpcms/templates/default目录下

模板目录与控制器名称一致(或者自行考虑).

 

模块控制器类,放在模块目录下。命名的时候一般加上my开头,以此来表示这是二次开发所加入。

 

关于模块控制器类的创建:

  两种类型:

  一种:前台浏览  (不含权限控制)

  二种:后台浏览   (含权限控制)

第一种控制器类的创建:

   1.在模块目录下创建mytest.php文件

   写入:

    <?php

            defined('IN_PHPCMS') or exit('No permission resource.');

                class mytest{

     function __construct() {

 

     }

     public function init() {

           $myvar = 'hello world!';

           echo $myvar;

     }

 

     public function mylist() {

     $myvar = 'hello world!this is a example';

     echo $myvar;

     }

    

    }

    ?>

      

  关于路径访问:

      使用你的项目域名:

      例如:www.cms.com/index.php?m=test&c=mytest&a=mylist

          m  代表的是module模块

          c  代表的是controller控制器

          a  代表的是具体控制器下的action 方法

 

 

第二种带有权限控制的控制器的创建:

     1.创建文件:mytest_admin.php

     <?php

  defined('IN_PHPCMS') or exit('No permission resources.');

 

  pc_base::load_app_class('admin','admin',0);

 

  class mytest_admin extends admin {

 

     private $db;

     public function __construct() {

 

     }

 

     public function init() {

       $myvar = 'hi , this is my world!';

       echo $myvar;

     }

  }

 

?>

 

 

关于模板文件的引用(加载):

   在你的控制器具体的方法中使用:

     include、require、include_once、require_once

     栗子如下:

      include template('test','mytest','default');

 

 

关于数据库的相关的配置:

  phpcms的相关配置在:

     caches/configs目录下

 数据库的配置文件在caches/configs/database.php

   

       配置形式:数组形式。

栗子:

 

<?php

 

return array (

'default' => array (

'hostname' => 'localhost',

'port' => 3306,

'database' => 'phpcmsv9',

'username' => 'root',

'password' => 'root',

'tablepre' => 'v9_',

'charset' => 'utf8',

'type' => 'mysqli',

'debug' => true,

'pconnect' => 0,

'autoconnect' => 0

),

 

>

 

如果想用其他的配置,可以在数据中在加入一个配置的索引

 

<?php

 

return array (

'default' => array (

'hostname' => 'localhost',

'port' => 3306,

'database' => 'phpcmsv9',

'username' => 'root',

'password' => 'root',

'tablepre' => 'v9_',

'charset' => 'utf8',

'type' => 'mysqli',

'debug' => true,

'pconnect' => 0,

'autoconnect' => 0

),

'mytest' => array (

        'hostname' => 'localhost',

        'port'     => 3306,

        'database' => 'demo',

        'username' => 'root',

        'password' => 'root',

        'tablepre' => '',

        'charset'  => 'utf8',

        'type'     => 'mysqli',

        'debug'    => true,

        'pconnect' => 0,

        'autoconnect' => 0

),

);

?>

 

然后在控制器中使用数据时候,可以指定需要什么样的数据库配置参数。

 

 

 

关于在控制器中使用数据curd:

   数据库模型放在:phpcms/model目录下面

   数据模型的名称可以这样:数据表名称 + _model.class.php

   例如要使用一个'test'数据库,就先需要创建一个test_model.class.php数据库模型文件.

  

<?php

 defined('IN_PHPCMS') or exit('No permission resource.');

 

 pc_base::load_sys_class('model','',0);

 

 class user_model extends model{

  public function __construct() {

  $this->db_config = pc_base::load_config('database');

  $this->db_setting = 'mytest';

  $this->table_name = 'user';

  parent::__construct();

  }

 }

 

?>

 

数据库模型类名与文件名一致

$this->db_setting = '具体的数据库参数配置,可以使用默认配置default 或者自定义';

$this->table_name = '数据表名';

 

在控制器中的链接方式:

<?php

  defined('IN_PHPCMS') or exit('No permission resources.');

 

  pc_base::load_app_class('admin','admin',0);

 

  class mytest_admin extends admin {

 

     private $db;

 

     public function showList() {

        $this->db = pc_base::load_model('user_model');

        $data = $this->db->select();

       print_r($data);

     }

  }

 

?>