phpcms二次開發

以下內容整理自官方教程的ppt,V9把開源作到家了,源碼註釋很詳細,附上官方使用手冊地址:http://www.oophper.com/html/manual/phpcms_v9/,要是還看不懂,只有兩個原因:一、php基礎知識掌握太差;二、沒有理解了MVC模式、面向對象的開發思想。

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即可。控制器類默認繼承系統的函數庫,可以直接使用。控制器類的類名稱與控制器文件名必須相同。如果您創建了一個abc.php在test模塊下,那麼我們在瀏覽器裏面輸入URL:http://www.yourname.com/index.php?m=test&c=abc

二次開發技巧

  如果要對已存在的控制器進行二次開發,爲了方便升級不建議直接對內核文件直接修改該,您可以通過“MY_*.php”的形式進行二次開發。

  例如您要對改phpcms/mood/index.php進行二次開發。您可以在與index.php同級的目錄下建立"MY_index.php" 


<?php  class MY_index extends index{  function __construct() {  parent::__construct();  }  ……your code  }  

  這樣當您通過url訪問index控制器的時候,系統會默認指向MY_index.php 並且原文件的方法將被繼承,可以直接使用。

系統配置文件

文件路徑:根目錄/caches/configs


database.php 數據庫配置文件
system.php 系統配置文件
route.php 路由配置文件

調用方法

如調用系統配置中的web_path:

pc_base::load_config('system', web_path ');

CMS入口文件:

PHPCMS是採用MVC設計模式開發,基於模塊和操作的方式進行訪問,採用單一入口模式進行項目部署和訪問,無論訪問任何一個模塊或者功能,只有一個統一的入口。

入口程序是在前期處理用戶請求的引導程序。它是唯一一個可以被最終用戶可以直接請求運行的。

文件路徑:根目錄/index.php

<?php  define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);  include PHPCMS_PATH.'/phpcms/base.php';  pc_base::creat_app();  ?>  

這段代碼首先加載了 phpcms 框架的引導文件 base.php,然後它根據指定的配置文件建立了一個 Web 應用實例並運行。
 

Phpcms v9後臺內容管理

Phpcms v9後臺文章發佈

PHPCMS V9 結構設計


根目錄
|–api  結構文件目錄
|–caches 緩存文件目錄
   |– configs 系統配置文件目錄
   |– caches_* 系統緩存目錄
|–phpcms  phpcms框架主目錄
   |– languages 框架語言包目錄
   |– libs 框架主類庫、主函數庫目錄
   |– model 框架數據庫模型目錄
   |– modules 框架模塊目錄
   |– templates 框架系統模板目錄
|–phpsso_server  phpsso主目錄
|–statics  系統附件包
   | – css 系統css包
   | – images 系統圖片包
   | – js 系統js包
|–index.php  程序主入口
 
 

PHPCMS框架入口文件:

文件路徑:根目錄/phpcms/base.php 代碼片段如下:


<?php  define('IN_PHPCMS', true);  define('PC_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR);  if(!defined('PHPCMS_PATH')) define('PHPCMS_PATH', PC_PATH.'..'.DIRECTORY_SEPARATOR);  define('CACHE_PATH', PHPCMS_PATH.'caches'.DIRECTORY_SEPARATOR);  ……  ?>  

該文件爲框架入口文件,包含實例化系統/模塊類方法,調用系統/模塊方法,系統常用常量等。如:


 pc_base::load_model(‘*_model’) 加載數據庫模型 pc_base::load_sys_class(‘classname’) 實例化系統類  pc_base::load_app_class(‘classname’,’admin’) 實例化模塊類  pc_base::load_sys_func (‘funcfile’) 調用系統函數庫  

全局函數文件:

文件路徑:根目錄/phpcms/libs/functions/global.func.php 代碼片段如下:


<?php  function new_addslashes($string){  if(!is_array($string)) return addslashes($string);  foreach($string as $key => $val) $string[$key] = new_addslashes($val);  return $string;  }  ……  ?>  

該文件中的函數,爲全系統基礎函數,可以在系統中直接調用。

二次開發技巧:

如果需要增加自己的全局函數,可根據需要增加到/phpcms/libs/functions/global.func.php/extention.func.php中,不會影響升級

數據模型基類:

文件路徑:根目錄/phpcms/libs/classes/model.class.php 代碼片段如下:


<?php  pc_base::load_sys_class('db_factory', '', 0);  class model {  //數據庫配置  protected $db_config = ''; //數據庫連接  protected $db = ''; //調用數據庫的配置項  protected $db_setting = 'default'; //數據表名  protected $table_name = ''; //表前綴  public $db_tablepre = '';  ……  ?>  

加載數據模型後,可以的數據庫該類中方法進行數據庫操作。

表單調用類:

文件路徑:根目錄/phpcms/libs/classes/form.class.php。 代碼片段如下:


<?php  class form {  //編輯器調用  public static function editor($textareaid = 'content', $toolbar = 'basic', $module = '', $catid = '', $color = '', $allowupload = 0, $allowbrowser = 1,$alowuploadexts = '',$height = 200,$disabled_page = 0) {  }  //圖片上傳調用  public static function images($name, $id = '', $value = '', $moudle='', $catid='', $size = 50, $class = '', $ext = '', $alowexts = '',$thumb_setting = array(),$watermark_setting = 0 ) {  }  ……  ?>  

通過實例化該類可以,調用在程序中調用編輯器、表單上傳、日期選擇、欄目結構等表單。 實例化方法:pc_base::load_sys_class('form', '', 0);

模板解析緩存類:

文件路徑:根目錄/phpcms/libs/classes/template_cache.class.php 。 代碼片段如下:


<?php  final class template_cache {  public function template_compile($module, $template, $style = ‘default’)     {  $tplfile = $_tpl = PC_PATH.'templates'.DIRECTORY_SEPARATOR.$style.DIRECTORY_SEPARATOR.$module.DIRECTORY_SEPARATOR.$template.'.html';  ……  ?>  

該類作用爲解析模板,解析模板及更新模板緩存

創建模塊控制器類

爲test模塊增加一個名爲myest的控制器 文件路徑:根目錄/phpcms/modules/test/mytest.php。 代碼片段如下:

<?php    defined('IN_PHPCMS') or exit('No permission resources.');      class mytest {        function __construct() {        }        public function init() {          $var = 'hello world!';          echo $myvar;        }        public function mylist() {          $var = 'hello world!this is a example!';          echo $myvar;        }    }  ?>  

常用操作列表(1)

1.調用數據庫模型

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

其中$this->db中所支持的方法請參照phpcms/libs/classes/model.class.php中方法

2.加載系統類

$http = pc_base::load_sys_class('http'); //實例化http類  pc_base::load_sys_class('format', '', 0); //調用form類,不進行實例化操作3.加載系統函  

3.加載系統函數庫

pc_base::load_sys_func('mail'); //調用mail函數包  

4. 加載模塊類

$test = pc_base::load_sys_class(‘classname‘,’test’); //實例化test模塊下 classname類  

5.加載模塊函數庫

pc_base::load_sys_func(‘global‘,’test’); //調用test模塊的global函數包  

常用操作列表(2)

6.加載前臺模板

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

7.加載後臺模板

include $this->admin_tpl('mytest_admin_list');  

8.權限控制

後臺控制控制器需要加載admin模塊下的admin類,並繼承該類

<?php  defined('IN_PHPCMS') or exit('No permission resources.');  pc_base::load_app_class('admin','admin',0);  class mytest_admin extends admin {  //這個控制器需要登錄後臺纔可以訪問 }  ?>  
發佈了36 篇原創文章 · 獲贊 7 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章