byadmin 發表於 2013-5-5 22:22:34
, 2707人已閱讀 , 0人回應
我們在使用火狐或者谷歌查看元素的時候看見的CSS的路徑是style_2_common.css或者style_2_forum_index.css這樣的形式,而在data下的template目錄下看到的確實2_2_common_block_thread.tpl.php形式,那Discuz模板的緩存和繼承到底是如何情況呢?
一、模板緩存
模板緩存存放:所有的模板緩存均被解析成php文件存放在 ./data/template 中,以 「數字_模板標示符組合.tpl.php」形式保存。如上面說的2_2_common_block_thread.tpl.php。
頁面緩存刷新原理:當開發者編輯過模板文件之後,Discuz! 模板解析器會匹配模板htm文件與緩存php文件的最後修改時間,如過模板html文件較新或無緩存文件,則更新或生成緩存,不新,則不採取任何動作。
手動刪除此目錄的緩存不會影響Discuz!系統的整體運行,Discuz! 模板緩存仍然會進行自動生成。
這個就是很多站長修改模板的時候修改了此目錄下文件,效果只能看見一下就消失的原因。
二、CSS緩存
CSS緩存存放:./data/cache/目錄中,以 「style_風格自增編號_應用入口關鍵字_所在頁面的mod值.css」形式保存。如開頭說的style_2_common.css或者style_2_forum_index.css。
自建新套系模板文件可以通過創建 ./template/archy_test/common/extend_common.css 或 extend_module.css 進行CSS擴展,其中這兩個文件的CSS樣式腳本會通過 Discuz! 模板解析將風格常量統一賦值進去併合將CSS腳本複製出來放入 ./template/default/common/common.css 和 module.css 所對應的緩存中去,方便站點運行時引用。
extend_module.css 系統解析與緩存存放:
其中可以使用下面的書寫方法:
- /** forum::index,forum::forumdisplay **/
- .archy_css {font: {FONTSIZE} {FONT};}
- /** end **/
複製代碼 上面的寫法含義是:針對 forum 的 index 和 forumdisplay 追加一個自定義的CSS樣式 "archy_css" ,Discuz! 模板解析將會根據 forum::index 的關鍵詞將 mycss 分別追加在「./data/cache/style_2_forum_index.css」和「./data/cache/style_2_forum_forumdisplay.css」中(裡面的數字2,根據新增的風格編號而定)
這樣的寫法好處就是,不變更默認模板的情況下有效的擴展CSS,並可以很好的進行多站點移植,同時也可以保護模板的目錄不會暴露。
三、CSS 繼承規範
Discuz! X系列產品中 CSS 文件會在緩存時按照以下順序進行合併:
1、template/default/*.css 文件
2、當默認模版是非默認模版時,template/模版目錄/extend_*.css 文件 或 template/模版目錄/*.css
3、當某插件啟用時,source/plugin/插件目錄/template/extend_*.css 文件
因此非默認模版目錄中的 CSS 屬性將繼承默認模版中的 CSS 屬性,插件目錄中的 CSS 文件將繼承前二者的 CSS 屬性
CSS 自身的集成順序為:當 CSS 屬性名稱相同是,CSS 文件中,寫在後面的替換前面的代碼。
《本文轉至DZ官網》 |
|