由於工作關係,只能暫時放棄對mongodb的研究了 .開始研究PHPcms .
目前為止我已經基本完成了模組的開發.趁著周末來這裡做個總結.我發現phpcms寫的還不錯,不過文檔什麼的確實不多.
不說廢話了.對於phpcms的模組開發.首先要瞭解模組的目錄結構.
我們可以在http://v9.help.phpcms.cn/html/2010/structure_0928/69.html
找到他的目錄結構 我們要開發的東東(也就是模組)就在/phpcms/modules/下面
如果沒有什麼特別的 在開發一個模組之前先要按照目錄結構建立好相關目錄並且設計好資料庫表結構 比方說 我們建立一個模組叫做我的模組 my_test
下面應該是mytest下的目錄結構
mytest
--class //這個是mytest模組會用到的類
--function//mytest模組用到的函數
--install//安裝此模組需要的一些設定檔和建立資料表myslq語句什麼的在這裡
--language//多語言的時候會用到
--config.ini.php//這個設定檔是用來描述整個模組的一些資訊
--extention.inc.php//這個是建立目錄結構 .這個檔案也用來控制許可權
--model.php//模組使用了哪些資料模型.(可以理解為使用了哪些表.)
--model.sql//這個向資料庫裡面插入模型的記錄
--my_test.sql//這個檔案在安裝的時候會被執行,把建立資料庫表的sql放進來
--templates //,mytest模組用到的模板檔案
--uninstall //卸載模組時候用到的配置和檔案
這個裡面的檔案我沒研究 回頭研究了補上.
my_test.php //這個是mytest模組的後台控制器檔案`
index.php//這個是前台的控制器,這個我沒寫東西.
建立完一個這樣的結構後 我們還需要在/phpcms/model/下面建立我們的資料模型
例如 my_test_model.class.php (這個使用了很典型的原廠模式)
具體每個檔案裡面寫了些什麼.我們一個一個來看 .首先來看我們在model檔案夾下面寫的那個檔案.
複製代碼 代碼如下:<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class my_test_model extends model {
public function __construct() {
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';//預設的資料庫配置.//多個庫的話可以在這裡選庫
$this->table_name = 'my_test';//這個就是表名稱,不用加表首碼
parent::__construct();
}
}
?>
第一行的作用是確定是不是在phpcms的運行架構內.
第二行載入系統的model類,後面的參數0 的意思是並不執行個體化.
最後一行調用了父類的構造方法.可以在phpcms/libs/classes/model.class.php中找到
而這個model類裡面定義了很多對資料的操作方法 最基本的增刪改查。以後我再詳細說說model基本的一些方法。
接著來看看modules 裡面的東東
我們一個個往下面看 第一個language 是用來支援多語言菜單的。
然後是config.ini.php,這個裡面寫的是一些關於模組安裝時候的資訊。
檔案裡面是這個結構的
複製代碼 代碼如下:$module = 'mytest';//使用的model
$modulename = '這裡是模組的名稱';
$introduce = '模組的描述資訊';
$author = '作者';
$authorsite = '作者網站';
$authoremail = '作者email';
裡面標註的很清楚了
接著是extention.inc.php 這個檔案是用來建立後台管理菜單的目錄結構的,也是用來控制許可權的
複製代碼 代碼如下:$id= $menu_db->insert(array('name'=>'這裡寫著操作名稱', 'parentid'=>父ID, 'm'=>'模組', 'c'=>'控制器', 'a'=>'動作', 'data'=>'', 'listorder'=>排序, 'display'=>'是否顯示'),true);//最後的true是用來返回ID的
檔案最後應該有一個數組,這個數組是用來插入系統的\language\zh-cn\system_menu.lang.php裡面的 格式如下複製代碼 代碼如下:$language = array(
'這裡是你起的操作名稱'=>'這裡是操作的中文翻譯',
類似:'mytest_init'=>'顯示列表'
);
然後是model.php 這個就是你使用了哪些資料模型 可以理解為使用了哪些表複製代碼 代碼如下:return array('mytest','my_test_artcle');
然後是model.sql 這個是用來向系統的模型表裡面插入資料用的複製代碼 代碼如下:INSERT INTO `phpcms_module` (`module`, `name`, `url`, `iscore`, `version`, `description`, `setting`, `listorder`, `disabled`, `installdate`, `updatedate`) VALUES ();
然後是mytest.sql 建立你資料庫表的語句應該寫在這個檔案裡面
接著就是你所使用的模板 應該放在templates裡面 命名的規則應該是 mytest_add.tpl.php
最後是你的控制器 這個有的研究了.控制器裡面是針對你每個url傳遞過來的action也就是a=?的動作.預設動作是init
複製代碼 代碼如下:<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin','admin',0);
class mytest extends admin(){
public function __construct(){
parent::__construct;//調用父類的建構函式
}
public function init(){
echo "這裡是預設的操作方法";
}
public function add(){
include $this->admin_tpl('mytest_add');//使用模板的方法
}
}
控制器裡面寫好了 我們把上面的檔案都寫完了就可以安裝我們的模組了 。