SharePoint2010主題和樣式揭秘(1)
好久好久沒寫技術博客了,差點以為技術已經離我遠去。但魚離不開水,我怎能把技術丟了呢,呵呵!最近部署了SharePoint2010,這個大玩意夠玩一段時間了。剛接觸的時候給我第一個感覺就是跟07比只是布局改變了,而且好多功能找不到。但慢慢接觸久了便覺得比07強多了,不僅布局更合理,操作更直觀方便…...有點跑題了,呵呵,言歸正傳,如果需要對SharePoint2010的外觀做定制,開始肯定會處處碰壁,連找個地方改背景圖都找不到,網上對外觀方面的介紹資料也太緊缺,所以本著“人人為我,我為人人”的精神,決定把這兩天對SharePoint2010主題和樣式方面的研究與大家分享。
一提到外觀,我們很自然就聯想到主題和樣式,但又是因為SharePoint很多封裝和內部處理,還有N多的“虛擬目錄”給SharePoint應用增添了不少神秘色彩。我們要找到外觀定制的著手點還真得費點功夫,在這里先介紹三個你不得不知道的主題和樣式相關的目錄。
其中一個是當站點的“發布”功能沒激活并且應用了主題后,站點中產生的“_theme”目錄。其中有“0”“1”“2”之類的子目錄。該目錄每次應用主題都會遞增1,但只會保存一個目錄,也就是只會保存當前主題版本。通過SharePoint Designer點到“所有文件”可以查看到。此時站點會加載目錄中的corev4-xxx.css樣式及其資源呈現網站外觀。但需要注意切記每次應用新的主題都會重新生成并應用其中內容,所以你的修改會被覆蓋。

第二個要講的目錄是"_catalogs/theme/Themed"目錄。當站點激活了“發布”功能并且重新應用了某些主題時便會產生,其中的每個子目錄都是都對應一個應用過的主題,其中保存著主題相應的css樣式文件及所引用到的圖片資源。每應用一個新的主題便會產生相應新的目錄,重新應用原來應用過的主題則不會產生新目錄,但原來內容也會被重新覆蓋。每個主題目錄的名字是固定的,比如“淺天藍”對應是1386CE2C目錄,你重新應用“淺天藍”目錄還是1386CE2C。但每次樣式表都會被重置,所以你如果修改了這里的樣式表,記得自己備份好嘍。

有些同學一看到第一個目錄的位置可能就著急打開看看,但找不到“_theme”或者“_theme”下邊沒有子目錄,那是什么原因呢?沒有應用到主題也總有個樣式表來描述默認的外觀吧?這就是這里要說的第三個樣式文件目錄。請大家定位到你SharePoint服務端上的一個目錄:“\\主機名\c$\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\2052\STYLES\Themable”這里包含了答案。里面有個corev4.css就是最基礎最關鍵的樣式表(其它的樣式表先不考慮),主題引擎可以改變的字體和顏色的玄機也在這個文件上。每次我們應用主題這個文件將被復制并做一些替換工作,放到上述兩個其中一個目錄中。有同學可能會問替換個啥呢?其實打開這個文件就可以知道,其中有很多被“注釋”的代碼,如:
/* [ReplaceColor(themeColor:"Accent3-Darker")] */ border:1px solid #2353b2;
/* [ReplaceColor(themeColor:"Accent4-Lightest")] */ background-color:#fffacc;
}
其實這個些注釋并不是真正的“注釋”,而是相當于替換內容的點位符,它們以行為單位,標識需要更改的樣式屬性。改成什么?其實就是改成主題中定義的內容(顏色、字體等)
如上例代碼所示border和background-color將會被主題(*.thmx)中定義的"Accent3-Darker"和"Accent4-Lightest"所替換。還有就是替換完以后還會將文件名改一下變成corev4-xxx.css才被送到相應的主題目錄下。
換句話說,其實(*.thmx)主題文件,其實內部只有字體、顏色等內容定義,而并沒有保存樣式表和相關圖片資源的。又有同學可能會問,那樣式中用到的圖片又是從哪里來的呢?這個因為時間關系,只有留到下一集再說了。
最后還要說說一個樣式目錄,當你還沒應用主題的情況下,在SharePoint Designer中打開母板頁并在某個樣式上按Ctrl點鼠標(轉到定義)時產生。 名叫“_styles”,下邊會有個corev4.css。這個是上述第三個目錄中的樣式文件的一個復本,直接修改后樣式就會應用到站點上。但除了你不再想使用切換主題的功能,不建議修改這個樣式文件。因為當產生這個目錄和樣式文件后,所有的主題樣式將不會再套用。如果想主題功能恢復正常,可以直接把整個“_styles”目錄刪掉。
如果大家想要更具體更科學的解釋,建議大家用反射工具看看CssLink和Theme類,它在Microsoft.SharePoint.WebControls命名空間,在Microsoft.SharePoint.dll 程序中,程序集位于你服務器上,路徑如下:\\主機名\c$\Program Files\Common
Files\Microsoft Shared\Web Server Extensions\14\ISAPI。
本文出處:http://www.rzrgm.cn/Ryu666/archive/2011/07/28/SharePoint2010ThemeAndCSS.html

浙公網安備 33010602011771號