uchome中的常用資料皆通過呼叫快取來實現讀取,包括系統配置、使用者組、群組欄目、使用者欄目、詞語遮蔽、積分規則、廣告、使用者嚮導任務、模組、myop預設應用等資訊。其中模板快取的使用前面單獨介紹過,見《【uchome二次開發】模板解析》。
uchome中常用資料是作為全域性變數來使用的,具體用法可參考《【uchome二次開發】全域性變數》。以下著重介紹快取機制的具體實現。
1、快取資料檔案的生成
uchome生成的快取資料檔案位於/data/目錄下。
* config_cache() 更新配置資訊快取,生成快取檔案data_config.php
* usergroup_cache() 更新使用者組快取,生成快取檔案data_usergroup.php
* profilefield_cache() 更新使用者欄目快取,生成快取檔案data_profilefield.php
* profield_cache() 更新群組欄目快取,生成快取檔案data_profield.php
* ******_cache() 更新詞語遮蔽快取,生成快取檔案data_******.php
* creditrule_cache() 更新積分規則,生成快取檔案data_creditrule.php
* ad_cache() 更新廣告快取,生成快取檔案data_ad.php
* task_cache() 更新使用者嚮導任務,生成快取檔案data_task.php
* block_cache() 更新模組,生成快取檔案data_block.php
* tpl_cache() 更新模板快取,清空模板快取資料夾/data/tpl_cache/下所有檔案使模板快取重新生成
* block_data_cache() 更新模組快取,清空模板快取資料使快取重新生成
除了模板和模組資料外,其他的只需呼叫對應的函式就可生成對應的快取資料檔案。具體快取生成的資料格式可檢視對應檔案。
2、快取資料檔案的分析
我們來看一下其中乙個快取檔案,群組欄目快取data_profield.php檔案,如下:
<?php
if(!defined('in_uchome')) exit('access denied');
$_sglobal['profield']=array
(1 => array
('fieldid' => 1,
'title' => '班級',
'formtype' => 'multi',
'inputnum' => 100,
'mtagminnum' => 0,
'manualmoderator' => 1,
'manualmember' => 1
)2 => array
('fieldid' => 2,
'title' => '實踐活動',
'formtype' => 'text',
'inputnum' => 100,
'mtagminnum' => 0,
'manualmoderator' => 1,
'manualmember' => 1))
?>
第二行**保證了緩衝資料無法被直接呼叫,而要求在uchome中才有效。當然這是君子協定,只要在呼叫**前define一下in_uchome即可繞過驗證。
之後的**其實只是做了變數賦值,將群組欄目資料賦值到$_sglobal['profield']中,因為之前$_sglobal以被定義為global全域性變數,因為群組欄目資料便能全域性訪問了。
3、快取資料檔案的使用
從上面分析可看出,快取資料檔案其實就是php**檔案,直接引入執行。因而我們的快取使用也就很方便了,只需將快取檔案使用include/include_once/require/require_once等函式引入進來即可使用,呼叫對應的變數來獲取快取的資料。
if(!@include_once(s_root.'./data/data_usergroup.php'))
呼叫不同的快取請更換對應的快取檔案和緩衝函式。
4、快取資料檔案的手動更新
在管理員成員的後台高階管理裡有一項是快取更新,可使用者手動更新快取,在系統全域性配置變動後建議手動做一次快取更新。
UCHome二次開發 模板修改
前一陣在做uchome的一些修改以滿足具體的應用,來做一點總結。涉及的修改都是些小功能或是介面的調整,所以主要涉及的是對於模板的修改,以下歸納一下過程和經驗。1 模板檔案定位 確定要修改的模板檔案這是第一步。方法一 url分析法。檢視 config.php,sc template 引數指示的是當前使...
uchome二次開發 ajax非同步提交資料
ajax可以有兩種方式實現非同步提交,一種是get,另一種是post,在uchome中均有簡單實現方法.第一.先說get方式,呼叫真是非常的容易 var x new xml x.get url,function s 處理返回乙個xml或者html格式資料,再用自己用js控制顯示資料。這裡要說的是uc...
postek二次開發 POSTEK二次開發介面
例項簡介 例項截圖 核心 using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using ...