PHPCMS二次開發(fā)教程(轉(zhuǎn)),phpcms二次開發(fā)教程_PHP教程
Jul 12, 2016 am 08:49 AMPHPCMS二次開發(fā)教程(轉(zhuǎn)),phpcms二次開發(fā)教程
轉(zhuǎn)自:http://www.cnblogs.com/semcoding/p/3347600.html
PHPCMS V9 結(jié)構(gòu)設(shè)計(jì)
根目錄
|–api? 結(jié)構(gòu)文件目錄
|–caches 緩存文件目錄
?? |– configs 系統(tǒng)配置文件目錄
?? |– caches_* 系統(tǒng)緩存目錄
|–phpcms? phpcms框架主目錄
?? |– languages 框架語言包目錄
?? |– libs 框架主類庫、主函數(shù)庫目錄
?? |– model 框架數(shù)據(jù)庫模型目錄
?? |– modules 框架模塊目錄
?? |– templates 框架系統(tǒng)模板目錄
|–phpsso_server? phpsso主目錄
|–statics? 系統(tǒng)附件包
?? | – css 系統(tǒng)css包
?? | – images 系統(tǒng)圖片包
?? | – js 系統(tǒng)js包
|–index.php? 程序主入口
PHPCMS V9 核心文件說明
模塊與控制器
模塊:
phpcms v9框架中的模塊,位于phpcms/modules目錄中 每一個(gè)目錄稱之為一個(gè)模塊。即url訪問中的m。
訪問content模塊示例:http://www.yourname.com/index.php?m=content
控制器:
phpcms v9的控制器就是模塊的類文件,位于phpcms/modules/模塊/目錄下面。類名成就是文件名+.php,例如一個(gè)名為abc的控制器,那么他的命名為abc.php即可??刂破黝惸J(rèn)繼承系統(tǒng)的函數(shù)庫,可以直接使用??刂破黝惖念惷Q與控制器文件名必須相同。如果您創(chuàng)建了一個(gè)abc.php在test模塊下,那么我們?cè)跒g覽器里面輸入U(xiǎn)RL:http://www.yourname.com/index.php?m=test&c=abc
二次開發(fā)技巧
如果要對(duì)已存在的控制器進(jìn)行二次開發(fā),為了方便升級(jí)不建議直接對(duì)內(nèi)核文件直接修改該,您可以通過“MY_*.php”的形式進(jìn)行二次開發(fā)。
例如您要對(duì)改phpcms/mood/index.php進(jìn)行二次開發(fā)。您可以在與index.php同級(jí)的目錄下建立"MY_index.php"
<?php class MY_index extends index{ function __construct() { parent::__construct(); } ……your code }
這樣當(dāng)您通過url訪問index控制器的時(shí)候,系統(tǒng)會(huì)默認(rèn)指向MY_index.php 并且原文件的方法將被繼承,可以直接使用。
系統(tǒng)配置文件
文件路徑:根目錄/caches/configs
- database.php 數(shù)據(jù)庫配置文件
- system.php 系統(tǒng)配置文件
- route.php 路由配置文件
調(diào)用方法
如調(diào)用系統(tǒng)配置中的web_path:
pc_base::load_config('system', web_path ');
CMS入口文件:
PHPCMS是采用MVC設(shè)計(jì)模式開發(fā),基于模塊和操作的方式進(jìn)行訪問,采用單一入口模式進(jìn)行項(xiàng)目部署和訪問,無論訪問任何一個(gè)模塊或者功能,只有一個(gè)統(tǒng)一的入口。
入口程序是在前期處理用戶請(qǐng)求的引導(dǎo)程序。它是唯一一個(gè)可以被最終用戶可以直接請(qǐng)求運(yùn)行的。
文件路徑:根目錄/index.php
<?php define('PHPCMS_PATH', dirname(__FILE__).DIRECTORY_SEPARATOR); include PHPCMS_PATH.'/phpcms/base.php'; pc_base::creat_app(); ?>
這段代碼首先加載了 phpcms 框架的引導(dǎo)文件 base.php,然后它根據(jù)指定的配置文件建立了一個(gè) Web 應(yīng)用實(shí)例并運(yùn)行。
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); …… ?>
該文件為框架入口文件,包含實(shí)例化系統(tǒng)/模塊類方法,調(diào)用系統(tǒng)/模塊方法,系統(tǒng)常用常量等。如:
pc_base::load_model(‘*_model’) 加載數(shù)據(jù)庫模型 pc_base::load_sys_class(‘classname’) 實(shí)例化系統(tǒng)類 pc_base::load_app_class(‘classname’,’admin’) 實(shí)例化模塊類 pc_base::load_sys_func (‘funcfile’) 調(diào)用系統(tǒng)函數(shù)庫
全局函數(shù)文件:
文件路徑:根目錄/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; } …… ?>
該文件中的函數(shù),為全系統(tǒng)基礎(chǔ)函數(shù),可以在系統(tǒng)中直接調(diào)用。
二次開發(fā)技巧:
如果需要增加自己的全局函數(shù),可根據(jù)需要增加到/phpcms/libs/functions/global.func.php/extention.func.php中,不會(huì)影響升級(jí)
數(shù)據(jù)模型基類:
文件路徑:根目錄/phpcms/libs/classes/model.class.php 代碼片段如下:
<?php pc_base::load_sys_class('db_factory', '', 0); class model { //數(shù)據(jù)庫配置 protected $db_config = ''; //數(shù)據(jù)庫連接 protected $db = ''; //調(diào)用數(shù)據(jù)庫的配置項(xiàng) protected $db_setting = 'default'; //數(shù)據(jù)表名 protected $table_name = ''; //表前綴 public $db_tablepre = ''; …… ?>
加載數(shù)據(jù)模型后,可以的數(shù)據(jù)庫該類中方法進(jìn)行數(shù)據(jù)庫操作。
表單調(diào)用類:
文件路徑:根目錄/phpcms/libs/classes/form.class.php。 代碼片段如下:
<?php class form { //編輯器調(diào)用 public static function editor($textareaid = 'content', $toolbar = 'basic', $module = '', $catid = '', $color = '', $allowupload = 0, $allowbrowser = 1,$alowuploadexts = '',$height = 200,$disabled_page = 0) { } //圖片上傳調(diào)用 public static function images($name, $id = '', $value = '', $moudle='', $catid='', $size = 50, $class = '', $ext = '', $alowexts = '',$thumb_setting = array(),$watermark_setting = 0 ) { } …… ?>
通過實(shí)例化該類可以,調(diào)用在程序中調(diào)用編輯器、表單上傳、日期選擇、欄目結(jié)構(gòu)等表單。 實(shí)例化方法: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'; …… ?>
該類作用為解析模板,解析模板及更新模板緩存
PHPCMS V9 二次開發(fā)
PHPCMS URL訪問:
PHPCMS是采用MVC設(shè)計(jì)模式開發(fā),基于模塊和操作的方式進(jìn)行訪問,采用單一入口模式進(jìn)行項(xiàng)目部署和訪問,無論訪問任何一個(gè)模塊或者功能,只有一個(gè)統(tǒng)一的入口。
參數(shù)名稱 描述 位置 備注
- M 模型/模塊名稱 phpcms/modules中模塊目錄名稱 必須
- C 控制器名稱 phpcms/modules/模塊/*.php 文件名稱 必須
- A 事件名稱 phpcms/modules/模塊/*.php 中方法名稱
模塊訪問方法[示例]:
二次開發(fā)命名規(guī)范
類文件需要以.class.php為后綴(這里是指的phpcms的系統(tǒng)類庫文件和模塊中的類庫文件,第三方引入的不做要求),例如http.class.php。
函數(shù)文件需要以.func.php為后綴(第三方引入的不做要求),例如mail.func.php。
類名和文件名一致,例如 phpcmsapp類的文件命名是phpcmsapp.class.php。
數(shù)據(jù)模型需要以“數(shù)據(jù)表名稱_model.class.php”為形式,類名稱與文件名必須相同。
二次開發(fā)開發(fā)流程
創(chuàng)建數(shù)據(jù)庫模型類
數(shù)據(jù)庫模型位于:phpcms/model/目錄下。
數(shù)據(jù)模型文件的命名規(guī)則建議為數(shù)據(jù)表名稱+'_model.class.php'
如果在我們的創(chuàng)建的模塊中我要使用一個(gè)數(shù)據(jù)庫“test”,首先需要建立一個(gè)數(shù)據(jù)庫模型文件,文件名稱為'test_model.class.php'
<?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_sys_class('model', '', 0); class test_model extends model { public function __construct() { $this->db_config = pc_base::load_config('database'); $this->db_setting = ‘default'; $this->table_name = 'test'; parent::__construct(); } } ?>
數(shù)據(jù)庫模型類名稱必須與文件名稱相同;
$this->db_setting = 'default'為數(shù)據(jù)庫配置文件中配置數(shù)據(jù)庫鏈接池名稱,默認(rèn)為default,一般情況下不需要修改。 $this->table_name = ‘test’為數(shù)據(jù)表名稱
創(chuàng)建模塊
如果要?jiǎng)?chuàng)建一個(gè)模塊,只要在 phpcms/modules 目錄下創(chuàng)建文件夾并放入你的控制器類就可以了。
例如要開發(fā)一個(gè)叫做test的模塊,那么首先在phpcms/modules 目錄下創(chuàng)建文件夾,并將其命名為test。模塊的標(biāo)準(zhǔn)結(jié)構(gòu)通常是這樣的。
如果您的模板有單獨(dú)的前臺(tái)模板,你需要在phpcms/templates/default下創(chuàng)建一個(gè)您的模塊目錄來放置前臺(tái)模板,"default"為你的風(fēng)格包名稱,我們默認(rèn)適用default
訪問test模塊示例:http://www.yourname.com/index.php?m=test
創(chuàng)建模塊控制器類
為test模塊增加一個(gè)名為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.調(diào)用數(shù)據(jù)庫模型
$this->db = pc_base::load_model('test_model');
其中$this->db中所支持的方法請(qǐng)參照phpcms/libs/classes/model.class.php中方法
2.加載系統(tǒng)類
$http = pc_base::load_sys_class('http'); //實(shí)例化http類 pc_base::load_sys_class('format', '', 0); //調(diào)用form類,不進(jìn)行實(shí)例化操作3.加載系統(tǒng)函
3.加載系統(tǒng)函數(shù)庫
pc_base::load_sys_func('mail'); //調(diào)用mail函數(shù)包
4. 加載模塊類
$test = pc_base::load_sys_class(‘classname‘,’test’); //實(shí)例化test模塊下 classname類
5.加載模塊函數(shù)庫
pc_base::load_sys_func(‘global‘,’test’); //調(diào)用test模塊的global函數(shù)包
常用操作列表(2)
6.加載前臺(tái)模板
include template('test', 'mytest', 'default');
7.加載后臺(tái)模板
include $this->admin_tpl('mytest_admin_list');
8.權(quán)限控制
后臺(tái)控制控制器需要加載admin模塊下的admin類,并繼承該類
<?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_app_class('admin','admin',0); class mytest_admin extends admin { //這個(gè)控制器需要登錄后臺(tái)才可以訪問 } ?>

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

phpcms跳轉(zhuǎn)到詳情頁方法:1、使用header函數(shù)來生成跳轉(zhuǎn)鏈接;2、循環(huán)遍歷內(nèi)容列表;3、獲取內(nèi)容的標(biāo)題和詳情頁鏈接;4、生成跳轉(zhuǎn)鏈接即可。

PHP CMS 是一種基于 PHP 的開源內(nèi)容管理系統(tǒng),用于管理網(wǎng)站內(nèi)容,其特點(diǎn)包括易用性、強(qiáng)大功能、可擴(kuò)展性、安全性高和免費(fèi)開源。它可以節(jié)省時(shí)間、提升網(wǎng)站質(zhì)量、增強(qiáng)協(xié)作并降低開發(fā)成本,廣泛應(yīng)用于新聞網(wǎng)站、博客、企業(yè)網(wǎng)站、電子商務(wù)網(wǎng)站和社區(qū)論壇等各種網(wǎng)站。

標(biāo)題:微信登錄集成指南:PHPCMS實(shí)戰(zhàn)在今天的互聯(lián)網(wǎng)時(shí)代,社交化登錄已經(jīng)成為網(wǎng)站必備的功能之一。微信作為國內(nèi)最流行的社交平臺(tái)之一,其登錄功能也被越來越多的網(wǎng)站所采用。本文將介紹如何在PHPCMS網(wǎng)站中集成微信登錄功能,并提供具體的代碼示例。第一步:注冊(cè)微信開放平臺(tái)賬號(hào)首先,我們需要在微信開放平臺(tái)上注冊(cè)一個(gè)開發(fā)者賬號(hào),申請(qǐng)相應(yīng)的開發(fā)權(quán)限。登錄[微信開放平臺(tái)]

phpcms不是完全免費(fèi)的。phpcms屬于開源cms系統(tǒng),但是開源并不等于免費(fèi),它有兩個(gè)版本:免費(fèi)版和商業(yè)版,免費(fèi)版僅限于個(gè)人非商業(yè)用途,而商業(yè)版需要購買授權(quán);個(gè)人可以作為研究使用,如果商業(yè)應(yīng)用,需要支付一定費(fèi)用。

PHPCMS用戶名安全設(shè)置策略大揭秘在網(wǎng)站開發(fā)中,用戶賬戶安全一直是開發(fā)者們十分重視的一個(gè)方面。而用戶名的安全設(shè)置也是至關(guān)重要的,因?yàn)橛脩裘粌H僅是用戶登錄的憑證,還可能暴露用戶的個(gè)人信息,甚至造成安全隱患。本文將揭秘PHPCMS中的用戶名安全設(shè)置策略,并給出具體的代碼示例供開發(fā)者參考。1.防止常見用戶名為了提高用戶名的安全性,開發(fā)者們應(yīng)該避免用戶使用過于

PHPCMS 是一款免費(fèi)開源的內(nèi)容管理系統(tǒng) (CMS),特點(diǎn)包括:開放源碼、模塊化、靈活、用戶友好和社區(qū)支持。它可用于創(chuàng)建各種類型的網(wǎng)站,包括企業(yè)網(wǎng)站、電子商務(wù)網(wǎng)站、博客和社區(qū)論壇。技術(shù)要求包括:PHP 5.6 或更高版本、MySQL、MariaDB 或 PostgreSQL 數(shù)據(jù)庫以及 Apache 或 Nginx Web 服務(wù)器。

phpcms有兩個(gè)版本比較知名,分別是:1、phpCMS4,支持自定義 URL 規(guī)則,網(wǎng)站管理后臺(tái)美觀易用,前端插件許多,可自由擴(kuò)展功能;2、phpCMS2008R1,支持多語言、多站點(diǎn)管理,頁面管理器便捷靈活方便,非常輕量級(jí),運(yùn)行速度快。

phpcms用mysql數(shù)據(jù)庫。phpcms是一個(gè)PHP開源網(wǎng)站管理系統(tǒng),采用PHP MYSQL做為技術(shù)基礎(chǔ)進(jìn)行開發(fā)。PHPCMS V9采用OOP方式進(jìn)行基礎(chǔ)運(yùn)行框架搭建,支持的PHP版本是PHP5及以上、支持的MYSQL版本是MySql 4.1以上版本。
