WSS3SDK之:如何自定义Mobile主页
本节提供了关于定制mobile设备所访问的Windows SharePoint Services 3.0主页的基本过程概述。详细的步骤参加后面的演练文章。
正如先前在Mobile页面渲染机制一节所描述的,在mobile主页的页眉,内容区,页脚(导航区)中的每个控件都会导致一条链式调用,分别通过以下3个模板选择器控件来启动该调用。
-
SPMobileWebTitle — 选择用于渲染页眉部分的RenderingTemplate控件。
-
SPMobileWebContents — 选择用于主干部分的 RenderingTemplate 控件。
-
SPMobileWebNavigation — 选择用于页脚部分的 RenderingTemplate 控件。
这些类的对象之一会根据所请求页面的站点类型(如STS,BLOG或者自定义站点)来选取一个RenderingTemplate对象。也就是说您 可以为特定类型的网站定制mobile的主页。举个例子,您可以显示一个问候信息在所有的STS类型的站点的mobile主页上。
注意:MPS,CENTERALADMIN和WIKI网站不支持从mobile设备访问。
这些控件会搜寻下列格式的RenderingTemplate ID:
Mobile_ SiteTypeID _HomePage_ PageArea
其中 SiteTypeID 可以是 STS 、 BLOG 或一个自定义站点定义的ID号,而 PageArea
指定了
Title, Contents, 或 Navigation 来代表待渲染页面中的区域。
基于当前网站的类型,SPMobileWebTitle控件决定了哪个RenderingTemplate对象将渲染到mobile主页的页眉区域。比如,SPMobileWebTitle对象将尝试使用ID为Mobile_STS_HomePage_Title的渲染控件来在mobile设备上渲染一个STS主页。如果没有找到这么一个ID,则他将使用ID为Mobile_Defaut_HomePage_Title的控件。
Windows SharePoint Services 3.0默认没有提供ID为Mobile_STS_HomePage_Title的RenderingTemplate元素,您可以创建一个。
在这种渲染机制下,创建一个包含一个自定义的页眉(Title),内容主体,或页脚(导航区域)的mobile主页其实就是创建一个渲染模板,其ID为对应得页面区域的模板选择器控件要搜索的ID。
已有的RenderingTemplate
当WSS安装好后,下列的两个用于mobile主页的RenderingTemplates已经存在于MobileDefaultTemplates.ascx中。-
Mobile_BLOG_HomePage_Navigation
-
Mobile_STS_HomePage_Contents
您不应修改该 MobileDefaultTemplates.ascx
文件。您可以创建一个新的RenderingTemplate元素(在您自己的.ascx文件中),只有使用与已存在的渲染控件相同的ID即可。但是,这么做将会存在风险,可能会破坏其他部署在WSS中的依赖原来的RenderingTemplate对象的解决方案。
注意:
Windows SharePoint Services 3.0自带的渲染控件会在自定义控件前先载入,所以当存在相同ID的自定义控件时,该控件模板的载入将覆盖原有的控件。如果有两个或更多的自定义控件模板 具有相同的ID,则文件名字母顺序排列在后面的将覆盖所有其他的。如果指定的文件中包含两个或更多的相同ID的渲染模板,则他们都将不被载入。
MobileDefaultTemplates.ascx
文件中。如果运行时没有找到为当前站点类型定义的渲染模板,则会使用这些模板。如果您新建的 RenderingTemplate 对象使用这些 ID 上面提到的风险也是存在的。-
Mobile_Default_HomePage_Contents
-
Mobile_Default_HomePage_Navigation
-
Mobile_Default_HomePage_Title
您可以嵌套 RenderingTemplate 对象。参见下面的示例。
自定义mobile主页中中的一部分
-
在 Microsoft Visual Studio, Notepad, 或任何文本编辑器中,新建一个用户控件文件(.ascx),放在路径
\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES下。
-
在文件中添加若干page标记来注册和引用相应的命名空间。
-
添加一个渲染控件到 .ascx 文件,采用这样格式的ID:Mobile_SiteTypeID_HomePage_PageArea.
-
SiteTypeID 可以是STS, BLOG, 或任何自定义站点定义的ID号。(站点定义的ID是在WebTemp.xml文件的Template元素的ID属性中指定的)。
-
PageArea 可以是 Title, Contents或 Navigation.
-
-
保存该 .ascx 文件并重新启动IIS,使更改生效。
示例
下面的例子展示了一个 RenderingTemplate 定义,其中还嵌套了另一个RenderingTemplate 。
<Template>
<mobile:Link Text="Microsoft" NavigateUrl="http://www.microsoft.com/" RunAt="Server" />
<SPMobile:SPMobileComponent TemplateName="Mobile_Default_HomePage_Navigation" RunAt="Server" />
</Template>
</SharePoint:RenderingTemplate>