创建WSS站点时自动应用主题
wss站点定义不支持默认主题的设定。但是我们还是有办法实现该功能。
管理员通常有3种选择,每一种都不推荐。
- 在站点创建后由用户手工设置一个主题(很不好!)
- 为公司中的站点设置统一的一个主题,保存成模板然后分发。(复杂化,同时将站点和文件系统中的模板分离,使得在将来难于改变)
- 改变默认的css文件或不用之(极不好。主题是用来干什么的???同样不支持不同主题的多模板)
问题的解决办法是在站点定义中增加一个链接到一个自定义页,该页将在站点创建后运行应用指定主题的代码。
第一步-更改站点定义
- 创建您需要的站点定义
- 进“xml”目录,编辑“onet.xml”文件
- 在最下面找到“Configurations”标签,对每一个您需要变更的configuration,在“Configuration”标签中添加下面的内容(在“THEMENAMEHERE”的位置写下您的主题名。注意大小写)
第二步-创建ThemeSetter.aspx
- 打开"c:\Program Files\Common Files\Microsoft Shared\web server extensions\60\TEMPLATE\LAYOUTS\2052"
- 新建一个文本文件,重命名为"ThemeSetter.aspx"
- 编辑该文件,粘贴下面的代码。
第三步-重新启动IIS
(在运行栏中执行“iisreset”),使得变更生效。
现在,使用您创建的站点定义创建的站点将自动的应用指定主题。
本文翻译msd2d上的文章而来,原文在此。http://msd2d.com/newsletter_tip.aspx?section=sharepoint&id=493c0348-5b00-4ef5-9410-018eebe84d67
<html dir="ltr">
<%@ Page Language="C#" ValidateRequest="False" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%
SPWeb myNewWeb = SPControl.GetContextWeb(Context);
myNewWeb.AllowUnsafeUpdates = true;
myNewWeb.ApplyTheme(this.Page.Request["Theme"].ToString());
myNewWeb.Update();
Response.Redirect(myNewWeb.Url);
%>
</html></body></html></body></html></body></html></body></html>
<%@ Page Language="C#" ValidateRequest="False" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%
SPWeb myNewWeb = SPControl.GetContextWeb(Context);
myNewWeb.AllowUnsafeUpdates = true;
myNewWeb.ApplyTheme(this.Page.Request["Theme"].ToString());
myNewWeb.Update();
Response.Redirect(myNewWeb.Url);
%>
</html></body></html></body></html></body></html></body></html>