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