dedecms 個人空間風格自定義方法

    某天下午偷懶,上班時間自個兒玩起了dedecms代碼。由於在產品班一直對老師教的寫死風格模板方法耿耿於懷,總覺得寫死代碼這是對原作者智慧結晶的一種褻瀆。我們應該讓數據能夠按照原來的走向,稍加擴展來完成我們的目的,嘿嘿。
    廢話少說,入正題!將我的整個探索過程記錄其下:
找到空間風格相關文件spaceskin.php,開始分析代碼。按照正常的數據流向,首先讀取用戶的默認風格數據
$userrow = $dsql->GetOne("Select spacestyle From `#@__member_space` where mid='".$cfg_ml->M_ID."' ");
不難推斷#@__member_space就是記錄用戶使用風格的數據表,$cfg_ml就是用戶登錄實例,M_ID爲默認風格ID。
再往下看,spaceskin.htm文件被包含進來,且該文件唯一的動態數據部分爲ListSkin(),可想該函數就是生成整個風格模板數據的關鍵函數,於是開始着手分析。
果然不出所料,在該函數處發現一個關鍵文件skinlist.inc--記錄風格模板列表。程序就是通過這個列表文件讀取模板存放的目錄,並讀取目錄中有無包含info.txt文件,從中讀取模板的名稱,demo圖片,文件夾名稱,作者,日期等相關信息,生成風格模板的顯示錶格。從以上分析,我們清楚瞭解到,想加入自定義的風格模板,只要從3個部分入手
1、將風格模板複製到member/space目錄下,並在skinlist.inc添加上文件夾的名稱。
2、爲自定義模板創建info.txt文件,這裏要注意的是一定要空出一行,也就是name:***要在第二行出現,否則無法正常獲取到模板的名稱,至於原因,我也不知道。
3、添加一個demo圖片,這個不是必須的,沒有的話也不影響操作。
 
僅以上三步,就能添加入自己的風格模板了,無需改源代碼,十分方便。
 
新函數知識:
1、eregi_replace( string pattern, string replacement, string string )
不區分大小寫替換正則表達式
pattern   正則表達式
replacement  要替換成的字符串
string  字符串
 
2、file_exists ( string filename )
檢查文件或目錄是否存在,如果由 filename 指定的文件或目錄存在則返回 TRUE,否則返回 FALSE
filename 文件目錄
 
3、is_dir ( string filename )
判斷給定文件名是否是一個目錄,如果文件名存在並且爲目錄則返回 TRUE。如果 filename 是一個相對路徑,則按照當前工作目錄檢查其相對路徑。
filename 文件路徑
 
4、opendir ( string path [, resource context] )
打開目錄句柄
patch 要打開的目錄
context 不祥
 
5、readdir ( resource dir_handle )
從目錄句柄中讀取條目,返回目錄中下一個文件的文件名。文件名以在文件系統中的排序返回。
dir_handle 目錄句柄
例:
$fp = opendir($dir); 
while ($sysname = readdir($fp)) 

    $dirs[] = $sysname; 
}
 
6、closedir ( resource dir_handle )
關閉目錄句柄,關閉由 dir_handle 指定的目錄流。流必須之前被 opendir() 所打開。
dir_handle 目錄句柄
 
7、filemtime ( string filename )
取得文件修改時間,返回文件上次被修改的時間,出錯時返回 FALSE。時間以 Unix 時間戳的方式返回,可用於 date()
filename 文件路徑
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章