[原文发表地址] Working with SharePoint 2010 Themes (Anweshi Deverasetty)
[原文发表时间] 2011-02-03 07:00
嗨,大家好,我是Anweshi Deverasetty。在过去的4年半中,我一直担任微软服务全球交付的副顾问。我从事软件行业已有9年,尤其是在SharePoint部分研究。目前,我在做一个项目,要将SharePoint 2007移至2010,实现Pivot视图,BCS,快速搜索等。这篇博客就是我致力开发和部署主题的产物。
希望你们阅读愉快!
介绍
我们的应用涉及SharePoint 2007到2010环境Web应用上的站点集合迁移。在用户角度的基本要求上,介于我们想在站点集合上执行可视化升级,我们用stsadm 中的PreserveOldUserExperience执行了迁移。这会做数据迁移,不过保留SharePoint 2007的外观和感觉。之后,可视化升级会用来升级至SharePoint 2010的外观和感觉。你可以点击这里在MSDN上了解更多PreserveOldUserExperience。
迁移主要涉及3个步骤——数据迁移,可视化升级和使我们的自定义组件与新版本兼容。做完数据迁移之后,执行可视化升级就很简单了,只是从站点设置→站点集合管理执行可视化升级而已,如下图所示(点击查看大图):
图1:站点设置中的可视化升级
不过仅仅执行可视化升级并没有多大作用。在你落实可视化升级之前需要考虑很多,做很多准备。第一件事就是在主页和主题上的工作。设计主题前,你要决定你是否希望跟着主题走,或者想要CSS风格。从始至终保持一种风格而不是而不是两种都使用 是很重要的,主题有时可能会覆盖CSS, 反之亦然。接下来会告诉你如何创建和部署一个主题。
关于主题
主题在2010中彻底被改变了。全新的2010主题使用的是完全不同的设计。SharePoint 2007主题使用CSS和图像,而新的2010主题则使用.thmx格式。这就意味着主题可以用PowerPoint或其它任何在本篇后面要讨论的工具简单地创建。你会注意到旧版SharePoint 2007主题在SharePoint 2010中不再使用。当你没有执行可视化升级执行迁移时,旧主题可以支持2007的外观和感觉。
这有许多可用的预定义主题,你可以从站点设置→外观和感觉→站点主题中看到。注意在SharePoint服务器中,你可以在浏览器内自定义主题。在SharePoint Foundation中,这个功能还不支持。以下是SharePoint服务器中站点主题的快速浏览(点击查看大图):
图2 :在站点设置中设置主题
创建自定义主题
SharePoint 2007创建主题要花些功夫,因为我们要处理CSS和图像。不过由于2010中主题设计大大改善,所以变得简单多了。下面就是一些可用的工具。提供了多种方法来创建主题。
自定义主题功能
在外观和感觉部分设置站点设置主题是SharePoint服务器中默认的功能,能使你自定义主题。在图2中,你可以看到自定义主题选项,让你自定义选中的主题。无论何时你选择一个预定义主题并自定义它,它就会创建一个新的主题叫做自定义,然后所有的变化都会应用到这个自定义主题中。所以每次你对一个预定义主题做了修改,自定义主题就会被改写。现在,如果你想保存这个主题,并在本地下载,你要按照以下步骤来操作:
1. 查看HTML源代码页面,查找/_catalogs/theme/Themed/uniqueHexId/corev4-uniqueNumber.css
2. 在浏览器中,导航至http://yourServer/_catalogs/theme/Themed/uniqueHexId/theme.thmx并下载文件
3. 重命名文件MyCustomTheme.thmx
主题生成器
你还可以用主题生成器来创建主题,可以在http://connect.microsoft.com/themebuilder获取。你可以选择现有的主题,或者用这个工具创建新的主题。以下是主题生成器的截屏:
图3:主题生成器UI
PowerPoint
还可以用PowerPoint来创建主题。在颜色下的设计标签上,选择创建新主题颜色。对它进行自定义,并以thmx格式文件保存。下面是创建新主题颜色对话框的截屏:
图4:PowerPoint主题UI
部署主题
通过代码和UI有很多种方法部署主题。以下是部署主题的不同方法。
主题Gallery部署
你可以把在PowerPoint或者主题生成器中创建的thmx文件上传到主题Gallery。将主题部署到主题Gallery很不错,尤其是你为单站点集合的话。如果你希望它应用到多个站点集合,那就看下一个方法。你可以通过站点操作→站点设置→主题来访问主题画廊。你一旦上传了,就可以去设置主题界面,如上图2所示,然后设置主题。你可以看到下图所示的主题画廊:
图5:主题Gallery
特征部署
发布任何构件作为一个特征,总是最好的实践。这适用于多站点集合。以下是功能和元素XML文件的一个例子。
Feature.xml
<?xml version="1.0" encoding="utf-8" ?>
<Feature Id="28E39FC9-BFE9-4FAE-9E71-C5BFEB818D2E"
Title="My Custom Theme"
Description="My Custom Theme"
Version="1.0.0.0"
Scope="Site"
Hidden="FALSE"
DefaultResourceFile="core"
xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="Elements.xml"/>
</ElementManifests>
</Feature>
Elements.xml
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="MyCustomTheme" Url="_catalogs/theme" Path="MyCustomTheme" RootWebOnly="true">
<File Url="MyCustom.thmx" Type="GhostableInLibrary" Path="MyCustom.thmx">
</File>
</Module>
</Elements>
有关部署和安装功能的详细信息,请见安装或卸载功能。一旦功能被安装启用,就会如图5所示,在主题Gallery中显示。
对象模型部署
你可以使用Microsoft.SharePoint.Utilities命名空间中的ThmxTheme类来程序化部署主题。ApplyTo方法将主题应用至站点集合。以下为代码片段:
C# 代码
using (SPWeb web = site.OpenWeb())
{
using (ThmxTheme theme = ThmxTheme.Open(web.Site, "./_catalogs/theme/MyCustomTheme.thmx”))
{
theme.ApplyTo(web, false);
}
}





