PHPCMS V9 模块开发 二次开发实例 留言本

鄙人实现了PHPCMS V9 产品开发权威指南(2011官方最新版).doc中的留言板实例,并加上模块安装和卸载功能,

程序可以运行,但只实现基本功能,目的是想让和我一样徘徊在PHPCMS门口不知道从哪儿进门的初学者走一下流程,欢迎指正!

对于像我这样的入门者希望先把上面这个文档仔细读一遍再往下看!

声明:我用的是GBK版本。

二次开发流程

  • 创建数据库和数据库表(无数据库操作可略过)
  • 创建数据模型文件
  • 创建模块目录
  • 开发控制器和模板
  • install和uninstall模块

一、创建数据库表

具体需求请查看上面的文档,不再赘述直接上SQL语句:

DROP TABLE IF EXISTS `guestbook`;

CREATE TABLE IF NOT EXISTS `guestbook` (  `gid` smallint(5) NOT NULL AUTO_INCREMENT,  `siteid` smallint(5) NOT NULL,  `title` char(80) NOT NULL,  `content` text NOT NULL,  `reply` text NOT NULL,  `userid` mediumint(8) unsigned NOT NULL DEFAULT ‘0‘,  `username` char(20) NOT NULL,  `passed` tinyint(1) unsigned NOT NULL DEFAULT ‘0‘,  `reply_status` tinyint(1) unsigned NOT NULL DEFAULT ‘0‘,  `addtime` int(10) unsigned NOT NULL DEFAULT ‘0‘,  `replyer` char(20) NOT NULL,  `replytime` int(10) unsigned NOT NULL DEFAULT ‘0‘,  PRIMARY KEY (`gid`))DEFAULT CHARSET=utf8;

二、创建数据模型文件

数据库模型位于:phpcms/model/ 目录下。数据模型文件的命名规则建议为 ‘数据表名称‘ + ‘_model.class.php‘ 。

这个模块中我们要使表“guestbook”,则数据库模型文件名称为‘guestbook_model.class.php‘,程序如下:

<?php
defined(‘IN_PHPCMS‘) or exit(‘No permission resources.‘);
pc_base::load_sys_class(‘model‘, ‘‘, 0);
class guestbook_model extends model {
    public function __construct() {
        $this->db_config = pc_base::load_config(‘database‘);
        $this->db_setting = ‘default‘;

        // 记得换成自己的表名
        $this->table_name = ‘guestbook‘;
        parent::__construct();
    }
}
?>

说明:任何自定义模块的数据模型类,均继承于model.class.php 数据模型基类。

在此基类中PHPCMS 系统已经把最常用的数据库操作方法进行了封装。 二次开发者不必关于如何操作数据库,

只需要根据需要用到的,已定义操作方法的要求,传递参数即可。系统会自动对数据进行处理,并返回结果。

说白了就是对你自定义的数据表的包装,更方便操作数据库。

三、创建模块目录  

PHPCMS v9框架中的模块,位于phpcms/modules目录中,每一个目录称之为一个模块。

如果要创建一个新模块,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。

当前我们要开发一个叫做guestbook的留言本模块,那么首先在 phpcms/modules 目录下创建文件夹,

并将其命名为guestbook。如下图所示:

guestbook 模块的标准结构通常是这样的,如下图所示:

classes  为模块类文件夹

functions 为模块函数文件夹

templates 为模块模板文件夹,这里通常放置含有权限控制的控制器模板,也就是后台模板!!!

如果您的模块有单独的前台模版,你需要在phpcms/templates/default下,

创建一个您的模块同名目录来放置前台模板(并进行配置,后面会说到),“default”为你的风格包名称,我们默认适用default。

install和uninstall为模块安装和卸载模块

四、开发控制器和模板

PHPCMS V9的控制器位于phpcms/modules/模块/目录下面,不是classes目录下。文件名是类名+.php,

例如一个名为guestbook的控制器,那么他的命名为guestbook.php即可。控制器类默认继承系统的函数库,可以直接使用。

需要注意的是:控制器类的类名称与控制器文件名必须相同。本留言本模块有以下二个控制器:

  • 前台index.php控制器开发

  前台控制器主要涉及前台留言显示、留言的提交处理等功能函数,以下为全部源代码,代码如下所示:  

<?php
defined(‘IN_PHPCMS‘) or exit(‘No permission resources.‘);
class index {
    function __construct() {
        // 加载留言本的数据模型
        $this->guestbook_db = pc_base::load_model(‘guestbook_model‘);

        // 取得当前登录会员的会员名(username)和会员ID(userid)
        $this->_username = param::get_cookie(‘_username‘);
        $this->_userid = param::get_cookie(‘_userid‘);

        //定义站点ID常量,选择模版使用
        $siteid = isset($_GET[‘siteid‘]) ? intval($_GET[‘siteid‘]) : get_siteid();
          define("SITEID", $siteid);

          //读取配置
        $setting = new_html_special_chars(getcache(‘guestbook‘, ‘commons‘));
        $this->set = $setting[SITEID];
    }

    public function init() {
        //设置分页条数
        $pagesize = $this->set[‘pagesize‘];

        $where = array(‘passed‘=>1,‘siteid‘=>SITEID);
        $page = isset($_GET[‘page‘]) && intval($_GET[‘page‘]) ? intval($_GET[‘page‘]) : 1;
        $infos = $this->guestbook_db->listinfo($where, ‘gid DESC‘, $page, $pagesize);
        $infos = new_html_special_chars($infos);

        // 加载系统form类,用于前台模块文件中生成验证码
        pc_base::load_sys_class(‘form‘, ‘‘, 0);

        // 加载前台模板
        include template(‘guestbook‘, ‘index‘);
    }

    /**
     *    在线留言
     */
    public function ly()  {
        if(isset($_POST[‘dosubmit‘])){
            // 标题和内容不能为空
            if (!(isset($_POST[‘ly‘][‘title‘]) && trim($_POST[‘ly‘][‘title‘]) &&
                isset($_POST[‘ly‘][‘content‘]) && trim($_POST[‘ly‘][‘content‘]))) {
                showmessage(L(‘输入不能为空‘), "?m=guestbook&c=index&siteid=".SITEID);
            }

            // 验证码
            if(isset($_POST[‘code‘])){
                /*V9验证码的数值是通过SESSION传递,故在这段代码中,首先加载配置文件,
                 取出当前系统配置中SESSION的存储方式。然后根据SESSION的存储方式,来加载对应的系统类库*/
                $session_storage = ‘session_‘.pc_base::load_config(‘system‘,‘session_storage‘);
                pc_base::load_sys_class($session_storage);
                if(!isset($_SESSION)) {
                    session_start();
                }
                $code = isset($_POST[‘code‘]) && trim($_POST[‘code‘]) ? trim($_POST[‘code‘]) : showmessage(L(‘请输入验证码‘), HTTP_REFERER);
                if ($_SESSION[‘code‘] != strtolower($code)) {
                    showmessage(L(‘验证码错误‘), HTTP_REFERER);
                }
            }
            $set = $this->set;
            $_POST[‘ly‘][‘addtime‘] = SYS_TIME;
            $_POST[‘ly‘][‘userid‘] = $this->_userid;
            $_POST[‘ly‘][‘username‘] = $this->_username;
            $_POST[‘ly‘][‘siteid‘] = SITEID;
            $_POST[‘ly‘][‘passed‘] = $set[‘check_pass‘];
            $this->guestbook_db->insert($_POST[‘ly‘]);
            showmessage(L(‘添加成功‘), "?m=guestbook&c=index&siteid=".SITEID);
        }  else  {
            echo  ‘请通过正常的方式提交留言,谢谢‘;
        }
    }
}
?>

  前台模板

  第三部分我们已经说了需要在phpcms/templates/default下创建一个‘guestbook‘目录,在该目录下再创建index.html文件,其源码如下:  

{if $this->set[‘guestbook_status‘]}
<div class="box boxsbg cboxs">
    <h5>我要留言  </h5>
    <div class="tag_a">
    <form action="{APP_PATH}index.php?m=guestbook&c=index&a=ly&siteid={SITEID}" method="post" name="myform" id="myform">
    <table cellspacing="1" cellpadding="0" class="table_form">
    <tbody>
        <tr>
        <th>标题</th>
        <td><input type="text" value="" id="title" name="ly[title]" class="input-text"></td>
        </tr>
        <tr>
        <th>内容</th>
        <td>
        <textarea name="ly[content]" id="content" cols="5" rows="8" value="" style="width:400px;"></textarea>
        </td>
        </tr>
        {if $this->set[‘enablecheckcode‘]==1}
        <tr>
        <th>验证码:</th>
        <td>
        <input name="code" type="text" id="code"/>{form::checkcode(‘code_img‘,‘4‘,‘14‘,110,30)}
        </td>
        </tr>
        {/if}
        <tr>
        <th></th>
        <td>
        <input type="submit" value="提交" name="dosubmit" class="button">
        <input type="reset" value=" 取消" name="reset" class="button"> </td>
        </tr>
    </tbody>
    </table>
    </form>
    </div>
</div>
<div style="height:5px;"></div>
{/if}

<?php
if(is_array($infos)){
foreach($infos as $info){
?>
<div class="box boxsbg cboxs">
    <h5>{$info[‘title‘]}</h5>
    <div class="tag_a">
         {$info[‘content‘]}
         <br><br>
         {if $info[‘reply‘]}<font color=red>回复内容:</font>
         <font style="color: #09F;">{$info[‘reply‘]}</font>
         {/if}
    </div>
</div>
<div style="height:5px;"></div>
<?php
}}
?>
 

  打开phpcms/templates/default/config.php , 进行以下两处修改:

  

  • 后台guestbook.php控制器开发

  后台管理控制器含权限控制,只有特定管理员才有权限访问,所以这个控制器需要加载admin 模块下的admin类,并继承该类。代码如下:  

<?php
defined(‘IN_PHPCMS‘) or exit(‘No permission resources. - guestbook.php‘);
pc_base::load_app_class(‘admin‘, ‘admin‘, 0);

class guestbook extends admin {
    public function __construct() {
        parent::__construct();//继承父类构造函数
        $setting = new_html_special_chars(getcache(‘guestbook‘, ‘commons‘));//读取留言本配置缓存文件
        $this->set = $setting[$this->get_siteid()];
        $this->guestbook_db = pc_base::load_model(‘guestbook_model‘);//加载留言本数据模型
    }

    public function init() {
        $where = array(‘siteid‘=>$this->get_siteid());
        $page = isset($_GET[‘page‘]) && intval($_GET[‘page‘]) ? intval($_GET[‘page‘]) : 1;
        $infos = $this->guestbook_db->listinfo($where, ‘gid DESC‘, $page, ‘15‘);

        /* 加载后台管理模版 guestbook_list.tpl.php。
         * 此文件位于phpcms/modules/模块/templates/
         * 由此即可明白,其它后台管理模版亦位于此目录*/
         include $this->admin_tpl(‘guestbook_list‘);
    }

    /* 未回复列表 */
    public function unreplylist() {
        $where = array(‘reply‘=>‘‘,‘siteid‘=>$this->get_siteid());
        $page = isset($_GET[‘page‘]) && intval($_GET[‘page‘]) ? intval($_GET[‘page‘]) : 1;
        $infos = $this->guestbook_db->listinfo($where, ‘gid DESC‘, $page, ‘15‘);
        include $this->admin_tpl(‘guestbook_list‘);
    }

    /**
     * 回复留言
     */
    public function reply() {
        if(isset($_POST[‘dosubmit‘])){
             $gid = intval($_GET[‘gid‘]);
            if($gid < 1) return false;
             $_POST[‘reply‘][‘replytime‘] = SYS_TIME;
            $_POST[‘reply‘][‘reply_status‘] = ‘1‘;
            $this->guestbook_db->update($_POST[‘reply‘], array(‘gid‘=>$gid));
            showmessage(L(‘回复成功‘),‘?m=guestbook&c=guestbook&a=init‘);
         } else {
             $gid = intval($_GET[‘gid‘]);
            if($gid < 1) return false;
             $show_validator = $show_scroll = $show_header = true;
             $info = $this->guestbook_db->get_one(array(‘gid‘=>$_GET[‘gid‘]));
            if(!$info) showmessage(L(‘guestbook_exit‘),‘?m=guestbook&c=guestbook&a=init‘);
            extract($info);
            // 加载后台管理模版 guestbook_reply.tpl.php
             include $this->admin_tpl(‘guestbook_reply‘);
        }
    }

    /**
    * 删除留言
    * @param    intval    $gid    留言ID,递归删除
    */
    public function delete() {
        if((!isset($_GET[‘gid‘]) || empty($_GET[‘gid‘])) && (!isset($_POST[‘gid‘]) || empty($_POST[‘gid‘]))) {
            showmessage(L(‘未选中‘), HTTP_REFERER);
        }
        if(is_array($_POST[‘gid‘])){
            foreach($_POST[‘gid‘] as $gid_arr) {
                $gid_arr = intval($gid_arr);
                $this->guestbook_db->delete(array(‘gid‘=>$gid_arr));
            }
            showmessage(L(‘删除成功‘),‘?m=guestbook&c=guestbook‘);
        }else{
            $gid = intval($_GET[‘gid‘]);
            if($gid < 1) return false;
            $result = $this->guestbook_db->delete(array(‘gid‘=>$gid));
            if($result){
                showmessage(L(‘删除成功‘),‘?m=guestbook&c=guestbook‘);
            }else {
                showmessage(L("删除失败"),‘?m=guestbook&c=guestbook‘);
            }
        }
    }

    /**
     * 留言本模块配置
     */
    public function setting() {
        //更新模型数据库,重设setting 数据.
        $m_db = pc_base::load_model(‘module_model‘);
        $set = $m_db->get_one(array(‘module‘=>‘guestbook‘));
        $setting = string2array($set[‘setting‘]);
        $now_setting = $setting[$this->get_siteid()];//当前站点的配置
        if(isset($_POST[‘dosubmit‘])) {
            $setting[$this->get_siteid()] = $_POST[‘setting‘];
            setcache(‘guestbook‘, $setting, ‘commons‘);
            $set = array2string($setting);
            $m_db->update(array(‘setting‘=>$set), array(‘module‘=>ROUTE_M));
            showmessage(‘配置更新成功‘, ‘?m=guestbook&c=guestbook&a=init‘);
        } else {
            extract($now_setting);
            // 加载后台管理模版 setting.tpl.php
            include $this->admin_tpl(‘setting‘);
        }
    }
}
?>

  上面涉及的后台模板代码如下:

  guestbook_list.tpl.php  

<?php
defined(‘IN_ADMIN‘) or exit(‘No permission resources. - guestbook_list.tpl.php‘);
$show_dialog = 1;
include $this->admin_tpl(‘header‘, ‘admin‘);
?>

<form action="?m=guestbook&c=guestbook&a=delete" method="post" name="myform" id="myform">
<table border="0" width="100%">
    <tr>
        <th><input type="checkbox" /></th><th>标题</th><th>内容</th><th>姓名</th><th>发表时间</th><th>是否回复</th><th>管理操作</th>
    </tr>
    <?php
    if(is_array($infos)){
    foreach($infos as $info){
    ?>
    <tr>
        <td align="center" width="35"><input type="checkbox" name="gid[]" value="<?php echo $info[‘gid‘]?>"></td><!-- 多选按钮 -->
        <td align="center"><?php echo $info[‘title‘]?></td><!-- 标题 -->
        <td align="center" width="30%"><?php echo $info[‘content‘]?></td><!-- 内容 -->
        <td align="center" width="100"><?php echo $info[‘username‘];?></td><!-- 姓名 -->
        <td align="center" width="120"><?php echo date(‘Y-m-d H-i-s‘,$info[‘addtime‘]);?></td><!-- 发表时间 -->
        <td align="center" width="10%"><!-- 是否回复 -->
        <?php if($info[‘reply‘]==‘‘){echo ‘<font color=red>未回复</font>‘;}else{echo ‘已回复‘;}?>
        </td>
        <td align="center" width="12%"><!-- 管理操作 -->
        <a href="?m=guestbook&c=guestbook&a=reply&gid=<?php echo $info[‘gid‘]; ?>" title="回复留言">回复</a> |
        <a href=‘?m=guestbook&c=guestbook&a=delete&gid=<?php echo $info[‘gid‘]?>‘
         onClick="return confirm(‘<?php echo L(‘confirm‘, array(‘message‘ => new_addslashes($info[‘title‘])))?>‘)">
         <?php echo L(‘删除‘)?>
        </a>
        </td>
    </tr>
    <?php } } ?>
</table>
<br />&nbsp;&nbsp;
<input type="submit" name="dosubmit" id="dosubmit" value="<?php echo L(‘删除留言‘)?>" />
</form>

  guestbook_reply.tpl.php  

<?php
defined(‘IN_ADMIN‘) or exit(‘No permission resources. - guestbook_reply.tpl.php‘);
$show_dialog = 1;
include $this->admin_tpl(‘header‘, ‘admin‘);
?>

<form action="?m=guestbook&c=guestbook&a=reply&gid=<?php echo $gid; ?>" method="post" name="myform" id="myform">
<table cellpadding="2" cellspacing="1" class="table_form" width="100%">
    <tr><th width="100"><?php echo L(‘username‘)?>:</th><td><?php echo $username;?></td></tr>
    <tr><th width="100">标题:</th><td><?php echo $title;?></td></tr>
    <tr><th width="100">内容:</th><td><?php echo $content;?></td></tr>
    <tr><th width="100">留言时间:</th><td><?php echo date(‘Y-m-d H:i:s‘, $addtime);?></td></tr>
    <tr><th>回复内容:</th><td><textarea name="reply[reply]" id="reply" cols="50" rows="6"><?php echo $reply;?></textarea></td></tr>
    <tr><th>回复时间:</th><td><?php echo date("Y-m-d H:i:s", time());?></td></tr>
    <tr>
    <th>是否通过审核:</th>
    <td>
    <input name="reply[passed]" type="radio" value="1" <?php if($passed==1){echo "checked";}?>>&nbsp;<?php echo L(‘yes‘)?>&nbsp;&nbsp;
    <input name="reply[passed]" type="radio" value="0" <?php if($passed==0){echo "checked";}?>>&nbsp;<?php echo L(‘no‘)?>
    </td>
    </tr>
    <tr><th></th><td><input type="submit" name="dosubmit" id="dosubmit" value=" <?php echo L(‘submit‘)?> "></td></tr>
</table>
</form>

  setting.tpl.php

<?php
defined(‘IN_ADMIN‘) or exit(‘No permission resources.‘);
$show_dialog = 1;
include $this->admin_tpl(‘header‘, ‘admin‘);
?>
<form action="?m=guestbook&c=guestbook&a=setting" method="post" name="myform" id="myform">
<table cellpadding="2" cellspacing="1" class="table_form" width="100%">

<tr>
<td align="right">是否允许留言:</td>
<td align="left">
<input name="setting[guestbook_status]" type="radio" value="1" <?php if($guestbook_status==1){echo "checked";}?> />&nbsp;<?php echo L(‘yes‘)?>&nbsp;&nbsp;
<input name="setting[guestbook_status]" type="radio" value="0" <?php if($guestbook_status==0){echo "checked";}?> />&nbsp;<?php echo L(‘no‘)?>
</td>
</tr>

<tr>
<td align="right">是否允许游客留言:</td>
<td align="left">
<input name="setting[allow_guest]" type="radio" value="1" <?php if($allow_guest==1){echo "checked";}?> />&nbsp;<?php echo L(‘yes‘)?>&nbsp;&nbsp;
<input name="setting[allow_guest]" type="radio" value="0" <?php if($allow_guest==0){echo "checked";}?> />&nbsp;<?php echo L(‘no‘)?>
</td>
</tr>

<tr>
<td align="right">是否需要审核:</td>
<td align="left">
<input name="setting[check_pass]" type="radio" value="1" <?php if($check_pass==1){echo "checked";}?> />&nbsp;<?php echo L(‘yes‘)?>&nbsp;&nbsp;
<input name="setting[check_pass]" type="radio" value="0" <?php if($check_pass==0){echo "checked";}?> />&nbsp;<?php echo L(‘no‘)?>
</td>
</tr>

<tr>
<td align="right">每页条数:</td>
<td align="left">
<input name="setting[pagesize]" type="text" size="20" value="<?php echo $pagesize;?>" />
</td>
</tr>

<tr>
<td align="right">是否开启验证码:</td>
<td align="left">
<input name="setting[enablecheckcode]" type="radio" value="1" <?php if($enablecheckcode==1){echo "checked";}?> />&nbsp;<?php echo L(‘yes‘)?>&nbsp;&nbsp;
<input name="setting[enablecheckcode]" type="radio" value="0" <?php if($enablecheckcode==0){echo "checked";}?> />&nbsp;<?php echo L(‘no‘)?>
</td>
</tr>

<tr>
<td align="right"><input type="submit" name="dosubmit" id="dosubmit" value=" <?php echo L(‘submit‘)?> "></td>
</tr>

</table>
</form>

五、安装模块和卸载模块

首先确保你的安装和卸载目录如下:

具体配置可以参考这篇帖子phpcms v9添加新模块。我们这里:

guestbook.lang.php -- 内容为空就行了

config.inc.php -- 模块信息和作者信息

<?php
defined(‘IN_PHPCMS‘) or exit(‘Access Denied‘);
defined(‘INSTALL‘) or exit(‘Access Denied‘);

$module = ‘guestbook‘;
$modulename = ‘留言板‘;
$introduce = ‘留言板独立模块‘;
$author = ‘你的名字‘;
$authorsite = ‘http://www.nidewangzhi.cn‘;
$authoremail = ‘[email protected]‘;
?>

extention.inc.php -- 后台管理菜单

<?php
defined(‘IN_PHPCMS‘) or exit(‘Access Denied‘);
defined(‘INSTALL‘) or exit(‘Access Denied‘);

$parentid = $menu_db->insert(array(‘name‘=>‘guestbook‘, ‘parentid‘=>29, ‘m‘=>‘guestbook‘, ‘c‘=>‘guestbook‘, ‘a‘=>‘init‘, ‘data‘=>‘‘, ‘listorder‘=>0, ‘display‘=>‘1‘), true);
$menu_db->insert(array(‘name‘=>‘setting‘, ‘parentid‘=>$parentid, ‘m‘=>‘guestbook‘, ‘c‘=>‘guestbook‘, ‘a‘=>‘setting‘, ‘data‘=>‘‘, ‘listorder‘=>0, ‘display‘=>‘1‘));
$menu_db->insert(array(‘name‘=>‘unreply‘, ‘parentid‘=>$parentid, ‘m‘=>‘guestbook‘, ‘c‘=>‘guestbook‘, ‘a‘=>‘unreplylist‘, ‘data‘=>‘‘, ‘listorder‘=>0, ‘display‘=>‘1‘));

$language = array(‘guestbook‘=>‘留言本‘, ‘setting‘=>‘留言配置‘, ‘unreply‘=>‘未回复留言‘);
?>

guestbook.sql -- 安装时数据库表的添加

DROP TABLE IF EXISTS `guestbook`;

CREATE TABLE IF NOT EXISTS `guestbook` (  `gid` smallint(5) NOT NULL AUTO_INCREMENT,  `siteid` smallint(5) NOT NULL,  `title` char(80) NOT NULL,  `content` text NOT NULL,  `reply` text NOT NULL,  `userid` mediumint(8) unsigned NOT NULL DEFAULT ‘0‘,  `username` char(20) NOT NULL,  `passed` tinyint(1) unsigned NOT NULL DEFAULT ‘0‘,  `reply_status` tinyint(1) unsigned NOT NULL DEFAULT ‘0‘,  `addtime` int(10) unsigned NOT NULL DEFAULT ‘0‘,  `replyer` char(20) NOT NULL,  `replytime` int(10) unsigned NOT NULL DEFAULT ‘0‘,  PRIMARY KEY (`gid`))DEFAULT CHARSET=utf8;

model.php -- 你所使用到的数据表

<?php
defined(‘IN_PHPCMS‘) or exit(‘Access Denied‘);
defined(‘INSTALL‘) or exit(‘Access Denied‘);

return array(‘guestbook‘);
?>

module.sql --

INSERT INTO `module` (`module`, `name`, `url`, `iscore`, `version`, `description`, `setting`, `listorder`, `disabled`, `installdate`, `updatedate`)
VALUES (‘guestbook‘, ‘留言本‘, ‘guestbook/‘, 0, ‘1.0‘, ‘留言本‘, ‘array (
  "1" =>
  array (
    "guestbook_status" => "1",    "allow_guest" => "1",    "check_pass" => "1",    "pagesize" => "3",    "enablecheckcode" => "0",  ),
  "2" =>
  array (
    "guestbook_status" => "1",
    "allow_guest" => "1",
    "check_pass" => "1",
    "pagesize" => "5",
    "enablecheckcode" => "0",
  ),
)‘, 0, 0, ‘2014-7-18‘, ‘2014-7-18‘);

卸载模块里面更是照葫芦画瓢了,不在赘述。

六、后续

  在后台安装这个模块,本人水平有限,帖子难免有许多纰漏,肯定会有很多细节没有讲清楚,大家可以先仔细阅读开篇的那个文档,再和帖子结合理解。界面如下:

  

谢谢围观!

PHPCMS V9 模块开发 二次开发实例 留言本

时间: 2024-10-16 18:48:03

PHPCMS V9 模块开发 二次开发实例 留言本的相关文章

java web开发(二) 接口开发

java web开发(一) 环境搭建讲解了如何搭建基础项目,如果你还没了解,可以先去看看!今天我们就来看看接口的开发,打算使用比较古老的或者说比较原始方法实现的接口. 一.数据库设计. 我打算做一个简单的学生信息管理系统,数据库名为students_manage,并且先设计一张学生表,表名为student. 1.打开Sqlyong工具,如果还没创建连接,可以点击新建,输入名称,点击确定即可, 2.然后在保存的连接中选择,刚刚新建的连接,只需要在密码输入框中输入,安装数据库时的设置的密码,点击连接

基于phpcms v9开发的微信公众号平台管理模块

前沿 在公司为一家酒店联盟开发了一个微信公众号平台,期间因为要赶做其它项目,停停顿顿,整整 改改估计用在开发微信模块的时间大概一个多月,前期的开发基本上已经完成,因为这个微信公众号管理平台是在运用phpcms v9开发的,是phpcms v9的一个模块,所以给它取一个名称,就叫phpcmsv9-weinxin吧. 先上图 phpcmsv9-weinxin模块介绍 之所以叫做微信模块,是因为它是基于phpcms v9的一个插件,安装与卸载随性所欲.phpcms v9是中国领先的内容管理系统,将微信

易扩展二次开发的web快速开发平台

我们先来看看web快速开发平台的发展 从编程之初,便免不了和方法,类,接口之类的东西打交道.久而久之,自然会对此进行总结,由此而产生了开发平台.而今中国的程序员之中,有很大一部分都是编一些企业MIS.政府MIS之类的程序.其主要工作就是对数据进行一下增删改查的操作,对MIS系统做一些基础的管理而已.随着互联网的流行,自然又要求以互联网为基础,把这些都网络化,以实现网络资源共享,而不是传统的单机模式.诸如用友.金蝶等都有自己的开发构件库,还有SAP的ABAP开发平台等等.但是ABAP开发平台太复杂

什么是php二次开发,怎么做php二次开发?

什么是php二次开发 所谓的二次开发,简单的说就是修改别人的东西,变成你想要的东西,插件基本属于高端了,根据现有的程序的不足,加以改进修饰,然后达到自己想要实现的功能和效果. 怎么做php二次开发 二次开发和一次开发不同的地方在于你是要先看懂别人的代码再去做,二次开发,首先你需要知道自己对什么程序进行二次开发,比如一些招聘信息上会写Discuz二次开发,ShopEX二次开发.这些都是对已经成型的程序进行的功能性扩展开发. 第一,你要有这个开 源 产 品的所用语言的语言基础,就是能看懂代码是最基本

PHPCMS V9二次开发自定义分页函数的解决方案

下面为大家分享一个PHPCMS V9二次开发自定义分页函数的方法. 方法如下: 首先打开 phpcms\libs\functions\global.func.php这个文件,找到分页函数,复制一下,粘贴到默认分页函数的下面,重新命名,比如我的就命名为wz_pages,保存. 打开 phpcms/libs/classes/template_cache.class.php,找到207行的: $str .= '$pages = pages($'.$op.'_total, $page, $pagesiz

PHPCMS二次开发教程(转)

转自:http://www.cnblogs.com/semcoding/p/3347600.html PHPCMS V9 结构设计 根目录 |–api  结构文件目录 |–caches 缓存文件目录    |– configs 系统配置文件目录    |– caches_* 系统缓存目录 |–phpcms  phpcms框架主目录    |– languages 框架语言包目录    |– libs 框架主类库.主函数库目录    |– model 框架数据库模型目录    |– modules

PHPCMS 使用图示和PHPCMS二次开发教程(转)

PHPCMS V9 核心文件说明 模块与控制器 模块: phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块.即url访问中的m. 访问content模块示例:http://www.yourname.com/index.php?m=content 控制器: phpcms v9的控制器就是模块的类文件,位于phpcms/modules/模块/目录下面.类名成就是文件名+.php,例如一个名为abc的控制器,那么他的命名为abc.php即可.控制器类默认继

PHPCMS V9完全开发介绍

PHPCMS V9 文件目录结构: 根目录 | – api 接口文件目录 | – caches 缓存文件目录 | – configs 系统配置文件目录 | – caches_* 系统缓存目录 | – phpcms phpcms框架主目录 | – languages 框架语言包目录 | – libs 框架主类库.主函数库目录 | – model 框架数据库模型目录 | – modules 框架模块目录 | – templates 框架系统模板目录 | – phpsso_server phpsso主

[PC]PHPCMS二次开发指南(上)

------------------------------------------------------------------------------------- PHPCMS本身功能已经很完善,自带的模块可用可不用,松耦合特性使其非常适合企业的二次开发. PC的默认路由在 phpcms/caches/configs/route.php 中定义,为content模块下index控制器的init方法 一. PC所有模块都在module目录下,与数据表名字相同: module目录中文件就是控