1.安裝配置---小問題:

估計就我這么傻 T-T ,改成自己的目錄名。
2.模塊的目錄:
模塊存放在modules文件夾里,打開這個文件夾,里面的一個文件夾代表一個模塊。


3.建立模塊以及其基本目錄結構。
現在新建個test模塊,要在phpcms/modules目錄下新建個myself目錄(這個test目錄就是模塊)
再依次新建classes、functions、install、templdates、uninstall目錄

4.創建了模塊的基本目錄以后,需要為新建模塊做安裝准備
4.1 新建myself模塊的配置文件
在install目錄下新建一個config.inc.php文件,
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
$module = 'myself'; //模塊的標識符,唯一性,不可重名,應該和目錄同名
$modulename = '掛件';
$introduce = '測試模塊,用來測試的';
$author = '掛件';
$authorsite = 'http://www.guajian.com';
$authoremail = 'guajian@sina.com';
配置好了以后保存,然后回到后台,更新緩存,點擊模塊管理,可以看到:

不用點擊安裝。
4.2 將模塊添加到左側菜單欄
在新建的myself模塊目錄下的install目錄里,新建個extention.inc.php文件,,填寫以下代碼,注意,parentid中的29是上面一級菜單 模塊 這個菜單的Id號,如果要在主菜單顯示,可以parentid的值改為0,如果要在指定菜單中顯示,可以把parentid改成對應菜單id 的值即可,菜單的id可以在擴展中的菜單管理中查看。

<?php
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
$parentid=$menu_db->insert(array('name'=>'myself',
'parentid'=>29,
'm'=>'myself',
'c'=>'myself',
'a'=>'init',
'data'=>'',
'listorder'=>0,
'display'=>'1'
),true);
// 這里可以生成管理菜單,也就是生成當前菜單的子菜單
$language=array('myself'=>'掛件');
?>
4.3新建模塊后台類文件(類文件就是控制器) 和 模板文件(就是視圖)-MVC
phpcms的url是這樣的index.php?m=admin&c=index&a=public_main,
m的值表示是模塊名,c表示是類名,a表示的是類的方法名,在上一步中,我們已經 向菜單表中插入一條模塊名為test,類名為test,方法名為init的條菜單記錄。所以就 必需在myself模塊(即myself根目錄)中新建一個myself類文件,並添加init方法,代碼如下。


<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin','admin',0);
class myself extends admin {
function __construct() {
parent::__construct();
}
public function init() {
include $this->admin_tpl('myself');
}
}
?>
上述init方法調用了myself模版,所以必需要在myself/templdates目錄下新建對應模塊,現在新建個myself.tpl.php文件, 命名規則是 .tpl.php

<?php
defined('IN_ADMIN') or exit('No permission resources.');
include $this->admin_tpl('header','admin');
?>
<div class="pad_10">
我可是你的掛件啊
</div>
</body>
</html>
4.4最后一步,安裝模塊:
安裝模塊就要往數據庫表單里添加信息,所以先寫一個插入模塊信息的sql文件
在install文件夾里新建個modules.sql文件,代碼如下
INSERT INTO `v9_module` (`module`, `name`, `url`, `iscore`, `version`, `description`, `setting`, `listorder`, `disabled`, `installdate`, `updatedate`) VALUES ('myself', '掛件', 'myself/', '0', '1.0', '', '掛件', '0', '0', '2017-05-03', '2017-05-03');

iscore如果為1,表示是系統內置模塊,是必選模塊,對於二次開發來說,寫為0即可。disabled如果為1表示禁止卸載,如果為0表示可卸載,根據需求,當前要實現的是可安裝和卸載。setting是模塊的配置變量,用來設置模塊的一些基本信息,值為一個字符串數組。例如,表單向導中的模塊配置功能。
4.5創建數據表模型類
各模塊的數據表模型位於:phpcms/model/ 目錄下。
數據模型文件的命名規則建議為:數據表名稱 + '_model.class.php'
打開install目錄,新建model.php文件.
寫上以下代碼
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
return array('myself');

作用是用來定義模塊的表名,在安裝時模塊時,系統會根據這個數組的值調用同目錄下的同名sql文件。
而在phpcms中,一個表對應一個模型類文件。因為,上面在model文件中的返回數組中添加了一個值 array(myself),對應的,就要新建一個同名的sql文件和一個model文件。
先在install目錄下新建一個myself.sql文件

DROP TABLE IF EXISTS `v9_test`;
CREATE TABLE `v9_test (
`id` mediumint(8) unsigned DEFAULT '0',
`name` char(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) TYPE=MyISAM COMMENT '掛件表';
作用:在數據庫生成了一張當前模塊需要使用的名為myself的表
然后在phpcms/model目錄新建個myself_model.class.php文件

<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class myself_model extends model
{
public function __construct()
{
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
$this->table_name = 'myself';
parent::__construct();
}
}
?>
5.安裝
做好了上述准備,進入后台,更新緩存,點擊模塊管理,找到添加的模塊點擊安裝

確定以后,安裝成功后會自動更新欄目緩存。 等待更新完成后,退出登錄,重新登錄后台。

點擊 掛件欄目

就可以看到剛才我們設置的模版的內容,
myself/templdates目錄下myself.tpl.php文件。
6.卸載自己添加的模塊
在uninstall 目錄里 新建 extention.inc.php 以及 model.php

Extention 里代碼如下

Model 里

因為用到了表 myself, 在install里有myself.sql 創建了表,在unstall里也應該有mysql.Sql用於刪除表.

配置好以后就可以進行模塊的卸載了,卸載掉以后,逃退出重新登錄才能看到左側菜單欄的效果。
注意:
install 里面還有兩個文件夾,模塊的語言文件名和模塊的名稱一樣,在模塊的install目錄下的languages目錄對應的語言新建一個mysql.lang.php文件,在安裝時,系統會自動把文件拷貝到phpcms/languages下對應的語言目錄下。
templates 用於存放前台模版,在安裝前把前台所需要的模板,全部放在這個目錄。模塊安裝時,系統會自動在網站根目錄下的templdates目錄中,新建一個和模塊名一樣的目錄,把install/templates目錄下的模板文件拷貝一份進來。
前台的邏輯處理文件直接在模塊根目錄下新建即可。

7.接下來就是模版的開發了。
有些時候可能會用到bootstrap,那么bootstrap應該放到哪里呢? 放到static文件夾里嗎?
這個時候要看情況了, 有兩種方法
1.直接放在和static同級的目錄下,因為phpcms前台都是通過入口文件index.php 訪問的,static和index.php同級,放在一起就可以直接引用

bs 是文件夾名字。
2.既然有JS_PATH,CSS_PATH ,那就造一個BS_PATH
在phpcms目錄下有base.php,里面定義了JS_PATH,復制一份修改,

因為加載了配置文件system,找到caches/configs/system.php 大概30行,復制修改,這樣bs路徑就設置好了。

然后把文件放到指定位置(static目錄里,我命名是bs),再到模版里引入就可以了。

這是在前台模版里引入的樣式。

參考視頻: 網易雲課堂里有phpcms二次開發教程,主要是安裝和模版開發,但是也是用的pc標簽,但是實際開發中很少用pc,比如我就是用php,。
開發新模塊算是一個大的項目需求,正常的項目需求就是對已有的模塊進行功能的增刪改。
