2009-09-10 146 views
2

我們使用MOSS 2007(SharePoint)作爲我們的Intranet。最近我們的任務是支持我們農場的多家公司的品牌。我們很快意識到,應用程序頁面(由修改後的application.master生成)無法提供多個品牌模板(主題除外)。使用jQuery來改變SharePoint中的application.master頁面

我認爲正確的解決辦法是保持對應用程序頁面的默認微軟品牌(我們在開發這個已經工作 - 對文件進行任何修改的託管服務器上)。

由於速戰速決然而,我在想,我也許可以使用jQuery來代替一個標誌,導航圖像的屈指可數,而在應用程序頁面幾個顏色。在頁面完全呈現之前基本上從品牌A轉到品牌B.

我的問題是......這個想法有多糟糕?這樣做有什麼缺陷?鑑於這只是一個臨時解決方案,我應該嘗試嗎?

回答

3

我認爲你的大部分問題都可以用一個好的CSS文件來解決。根據我的經驗,這比JavaScript更好,因爲它加載速度更快。請記住,SharePoint產生沉重的頁面(DOM明智),所以jQuery需要很長時間才能到達$(document).ready,甚至更長的時間來操縱那個超大的DOM - 在IE6上這可能需要幾秒鐘,給人一樣的印象緩慢的網站或服務器。
我已經使用CSS對SharePoint進行了許多自定義:它可能需要幾個臭臭!important s,但結果比javascript好。
另外,請記住,您可以設置每個站點的CSS文件(在您設置子站點的母版頁的同一頁上) - 可以使用此功能,而不是實際爲每個品牌創建母版頁。

+0

+1:解決問題的更簡潔的方法。 –

+0

關於臃腫的DOM的好處 - 我試過了,效果不一致無縫。損害是通過繼承的品牌解決方案完成的,所以我認爲我們超越了CSS--我希望避免重新訪問修改後的application.master。 :)感謝你們兩個 - 願意選擇兩者作爲答案。 – Mayo

4

爲了增加Kobi's answer,你可以使用委託的控制功能進行部署。

廣場_controltemplates下一個用戶的控制,如:

<%@ Control Language="C#" %> 
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint" %> 
<SharePoint:CssRegistration name="/_layouts/custom/app.css" runat="server"/> 

寫委託控制功能(這裏是elements.xml中):

<?xml version="1.0" encoding="utf-8" ?> 
<Elements xmlns="http://schemas.microsoft.com/sharepoint/"> 
<Control ControlSrc="~/_ControlTemplates/CustomBranding.ascx" 
       Id="AdditionalPageHead" Sequence="1" /> 
</Elements> 

包括自定義CSS _layouts/custom/app.css