phpcms 新建模塊安裝


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

 

 

估計就我這么傻 T-T  ,改成自己的目錄名。

 

2.模塊的目錄:

 

模塊存放在modules文件夾里,打開這個文件夾,里面的一個文件夾代表一個模塊。

 

 

3.建立模塊以及其基本目錄結構。

現在新建個test模塊,要在phpcms/modules目錄下新建個myself目錄(這個test目錄就是模塊)

再依次新建classesfunctionsinstalltempldatesuninstall目錄

 

 

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

phpcmsurl是這樣的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文件中的返回數組中添加了一個值 arraymyself),對應的,就要新建一個同名的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 訪問的,staticindex.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,

開發新模塊算是一個大的項目需求,正常的項目需求就是對已有的模塊進行功能的增刪改。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM