## **1. 模板多主題化**
(1) 模塊和插件支持多主題功能,手機主題和pc主題均可自由切換主題
(2) 開發者可參考 “目錄結構” 中的 hicms模塊示例
關于主體化設置,我們可參考如下圖:

#
## **2. 主題化深度開發**
當我們在后臺操作設置了某個主題為默認主題時,意味著設置了該主題作為該模塊的默認主題,前端home目錄內控制器對應輸出視圖的目錄都在這個主題目錄里面,這點很好理解。但是,我們有時會遇到需要同時修改該應用前端控制器代碼,甚至該應用的后臺代碼!從版本v1.2.1開始,我們都提供了這些深度開發操作!
**為了更好的描述,后面我們都以test命名的主題為例吧(目錄結構里,都以這個test主題為例的)**:
目錄或控制器對應關系如下圖:

我們要為這個應用,新增一個test主題,由于功能擴展比較多,需要新增或修改前端業務代碼和后端代碼,那么我們要在admin目錄下新建test目錄,home目錄內新建test目錄,這個兩個目錄用來存放后臺和前端的控制器類。
**(1) 注意:這個命名必須要以PC主題名定義**
這些控制器可以是新增的擴展類,或者上一級目錄(原默認)已經已存在的控制器類。
**(2) 自動實現重載**
舉例:
(2.1). 我們在后臺設置這個test主題為默認主題,看看后臺admin控制器目錄內程序是怎么執行的
如上圖,我們看到, admin目錄里有了控制器類Index.php,而admin目錄下的test(二級控制器目錄)也存在這個同名的控制器類文件,那么在程序執行流程中,test下的控制器類Index.php會執行重載操作, 覆蓋admin控制器根目錄下的Index.php 。
(2.2). 另外一種情況,test控制器目錄內不存在時,但由于上一級目錄已存在的控制器類,在前端需要的情況下,也會自動繼承執行。 假如我們刪了test控制器目錄下的Index.php,上一級(admin根目錄)中由于存在同名的Index.php, 那么會執行這個Index.php控制器類。 換句話說,**當設置theme中的test為默認主題時(后臺應用主題管理里可手動設置,不設置默認default主題)**, 那么這個admin下的test目錄內的控制器類會被優先執行。
(2.3). 如上圖, home控制器目錄同理。
**(3) 視圖模板定位**
不管后臺還是前端視圖模板輸出,都跟上面的優先執行原理一樣。唯一區別的是theme內目錄結構,它的最初的默認主題模板是存放在default目錄下的!
**(4) 手機端視圖模板定位提權**
(4.1) 我們可在每個應用配置里定義變量名為 ‘應用名’+_mobile_theme_only ,值為1 ,來提升 網站應用移動端的主題使用權限,同時也不會影響以后pc端建立主題;使用場景舉例: 比如我們網站某個應用,要求是頁面是自適應,即手機和pc端均有自己的主題模板,但當前先上線手機端, pc端以后再說,但是要求在pc端也能瀏覽到這個手機模板頁面,那么定義好該變量即可實現! 就這樣過了N天后,新的PC端頁面要上線,那么我們只需按正常流程建立pc主題即可, 我們訪問pc端會自動會定位到pc主題!
(4.2) 注意,這個配置非全站的,而是每個應用根據需要開啟這項功能,不需要就不加入這個配置變量, 一切為了保持每個應用的靈活設計需求。
(圖1)

(圖2)
