# 八、開發主題
在主題的開發當中,開發者需要先熟悉Thinkphp的模板開發,建議系統化學習Thinkphp模板開發章節,如果有時間的話,還可以考慮系統化學習Thinkphp開發。
在OpenSNS的系統中,我們建立了另外一種集中的方式來開發主題。學習本章,可以明白如何去開發主題。
一、目錄結構
在theme中創建一個類似blue的文件夾,里面的info.php必須填,然后再里面創建對應的模塊文件夾,然后把Application/ucenter/view里面的文件拷貝過來,然后修改樣式。
上圖是默認模板與新模版對應關系。
下圖為主題的目錄結構
特別注意!!!主題的目錄結構里沒有 default 這個主題目錄,所以構建目錄的時候,拷貝模板進去,必須剝離掉default這層目錄。大部分主題無效就是這個原因導致的。
1 View/Index/edit.html
而不是
1 View/default/Index/edit.html
二、主題信息的錄入
標準的Info.php格式
<?php return array(
//模版名
'name' => 'T4',
//別名
'title' => '仿TS4.0風格',
//版本號
'version' => '1.0.0',
//是否商業模版,1是,0,否
'is_com' => 0,
//模版描述
'summary' => '簡單模仿T4的設計風格。',
//開發者
'developer' => '鄭恒盛',
//開發者網站
'website' => 'http://www.ourstu.com',
);
上述代碼中,就是一個標準的Theme的info.php文件,大家可以對應修改。這些信息將會被主題系統所導入。
配置表單就這么生成了,不過你生成的表單可能沒數據,這個先不管。到此,差不多大家心里有個數了。下面我們再講講一些開發中要遇到的問題。
1.怎么設置默認值?
2.怎么保存為一個配置項,到前臺模塊中調用到?
對于第一點,我們這邊有一個辦法:調用builder的data()方法,存入一個鍵值對數組,調用這個方法后,系統會自動根據鍵值對填充內容到表單里。
對于第二點,OC提供了一個handleConfig()方法來自動保存配置,同時前臺也提供了一個modC('鍵名','默認值','Controller名')的配置項讀取方法。根本不需要開發者去管數據庫讀寫的問題。
像我們上面的
1 $builder = new AdminConfigBuilder(); $data = $builder->handleConfig();
僅用一行代碼,就完成了對表單數據的保存,同時可以用modC()函數到前臺去調用。完全不用考慮復雜的邏輯,這就是builder的魅力之所在。
同樣的,我們可能會涉及到第一個問題和第二個問題結合的情況:
怎么給作為配置項的表單設置默認值?
1 $data['OPEN_LOGIN_PANEL'] = $data['OPEN_LOGIN_PANEL'] ? $data['OPEN_LOGIN_PANEL'] : 1;
將handleConfig取回的data進行無值判斷,最后分號前的那個值就是默認值。
當然,前臺要調用的時候也有這個默認值,就需要用modC的第二個參數來給了。
這邊有一個比較麻煩的地方就是modC的默認值和后臺設置的默認值可能不統一,而且在多次要讀取配置項的時候會需要在modC里不斷設置默認值。這一點,似乎通過現在的builder機制還無法實現,只能是笨笨地多次設置。