UCHome全面大解析 二 基本體系結構

2021-06-25 13:33:49 字數 2839 閱讀 5193

本期主要介紹uchome的體系結構開始,一步一步教大家理解uchome。

uchome安裝後的主要目錄與檔案介紹:

admin/      管理後台

api/      api函式[外掛程式開發與模板等的修改不需要動此檔案]

attachment/ 附件目錄

data/   快取目錄,此目錄要有777許可權,系統相關快取基本上都在這裡了

data/tpl_cache/ 模板快取目錄,注意,如果你的uch白屏了,無法進入後台跟新快取,通過ftp手工刪除此目錄下的所有檔案即可相當於模板快取的更新

image/  目錄

language/   語言目錄 ,跳轉提示語言等

source/  php源程式目錄

template/  模板目錄

theme/ 個人主頁目錄

uc_client/ ucenter客戶端 [外掛程式開發與模板等的修改不需要動此檔案]

以下是uchome根目錄下常用檔案【不常用的不在介紹】

admincp.php  後台管理入口檔案

common.php  通用檔案,所有的檔案都要包含這個檔案,在上篇已詳細解釋了內容

config.php  基本配置檔案

cp.php     編輯日誌、相簿、活動等等相關編輯操作基本上都從這個檔案入口

do.php   登入、註冊、找回密碼、相簿批量上傳、在需要密碼的情況下才能檢視日誌相簿、驗證碼、傳送郵件、統計、郵件驗證等行為的入口檔案

editor.php  編輯器的入口檔案,強烈建議您不用動他

magic.php  道具入口檔案

network.php 隨便看看等入口檔案

space.php   個人空間、日誌、相簿、活動等入口檔案

我們一般修改uch主要涉及的入口檔案有space.php  network.php  do.php  cp.php 這四個,那麼我們如何根據你訪問的url判斷涉及到那些php檔案和模板檔案,方便您的進一步修改!

好了,現在我們以最簡單的do.php入口檔案來分析下,

舉個列子,如果我們使用找回密碼功能,通常鏈結如下:do.php?ac=lostpasswd,而註冊的鏈結一般分兩種,一種是do.php?ac=後台自定義登入識別名

另一種是do.php?ac=隨機

好了,我們進入do.php檔案中繼續看看

include_once('./common.php'); 上節說了,這個是公用檔案,在上篇已詳細解釋了內容

//獲取方法

$ac = empty($_get['ac'])?'':$_get['ac']; //獲取do.php?ac中ac的值

//自定義登入

if($ac == $_sconfig['login_action']) elseif($ac == 'login')

if($ac == $_sconfig['register_action']) elseif($ac == 'register')

//允許的方法

//這裡很重要,login對應的是登入,register定義的是註冊,lostpasswd定義的是找回密碼,與上面訪問的url是否是對應上了

//對應上面的do.php?ac=login,do.php?ac=register,do.php?ac=lostpasswd,其他類似!如果ac後的引數不在下面的陣列中,則為非法。跳轉到首頁

$acs = array('login', 'register', 'lostpasswd', 'swfupload', 'inputpwd',

'ajax', 'seccode', 'sendmail', 'stat', 'emailcheck');

if(empty($ac) || !in_array($ac, $acs))

//鏈結

$theurl = 'do.php?ac='.$ac;

//這是包含檔案的意思,繼續執行一下檔案的意思,

//其中s_root是uchome安裝目錄的常量

//根據下面的語句,我們可以這樣判斷,如果鏈結是do.php?ac=lostpasswd的話,程式繼續執行source/do_lostpasswd.php檔案!

include_once(s_root.'./source/do_'.$ac.'.php');

複製**

不知道大家是否能理解,不理解多看幾遍!

好了,我們找到source/do_lostpasswd.php檔案看下,這個檔案**較多,我們不用管他,最主要的是我們要找到其對應的模板,

查詢下include template這個語句【注:在其他php檔案中可能有多個結果,那是因為不同條件下包含不同的模板】。你就會發現在末尾找到

include template('do_lostpasswd');

複製**

這就是模板名,這個記住規則,do_lostpasswd對應的模板是do_lostpasswd.htm名。那麼這個檔案在哪個位置呢?

我們系統目錄template/下有 預設的default,blue,green這三個資料夾,對應不同的風格,如果你安裝了其他風格,可能還有其他目錄。

系統是如何查詢do_lostpasswd.htm呢?

大家記得在後台有乙個模板選擇的下拉表嗎?系統會在你選擇的模板風格資料夾下查詢do_lostpasswd.htm,如果找不到則在去default目錄下查詢。

注意: 為了提供效率,模板並不是每次都編譯的,嚴格的來說,uchome會先判斷對應的模板是否被解析過了【查詢data/tpl_cache/目錄下是否有對應的模板快取】

如果沒有的話才會去按上面的規則去查詢。

基本上,按照以上思路就可以根據鏈結找到匹配的程式檔案和模板檔案了

下節我們將會介紹幾個製作模板中實用的訣竅及模板的解析原理。如如何修改程式讓uchome每次都重新解析模板,而不生成快取!

融資融券大解析

10月5日,證監會宣布將在近期發布融資融券業務的相關通知。由此,醞釀已久的融資融券業務即將開始試點。這一訊息,讓市場上眾多的投資者躍躍欲試。自己能否參與 如何操作以及需要關注的重點等問題,也成為大眾關注的焦點。對此,業內人士從各個方面給投資者提出了相關建議和分析。本報記者 金蘋蘋 概念解析 屬保證金...

MySQL複製格式大解析

以下內容基於mysql5.7官方文件 複製之所以有效,是因為從源讀取了寫入二進位制日誌的事件,然後在副本上對其進行了處理。根據事件的型別,事件以不同的格式記錄在二進位制日誌中。使用的複製格式對應於將事件記錄在源的二進位制日誌中時使用的二進位制日誌記錄格式。二進位制日誌記錄格式有以下三種 使用基於語句...

Mac OS電源管理大解析

睡眠模式 hibernatemode 也就是mac在睡眠模式下面的工作方式,目前主要有3種。hibernatemode 0 睡眠時記憶體保持供電,其他部件斷電,記憶體資料不寫入硬碟。優點是可以快速喚醒 快速睡眠,因為記憶體保持供電,無論是喚醒還是進入睡眠都是1秒內的事情 節省ssd空間和壽命,因為記...