WSS3SDK之:如何通过重定向来定制Mobile主页

默认情况下,WSS在网站中使用一种上下交错的重定向机制。Mobile主页是在传统的URL后面多了 一个"m"文件夹(比如,http(S)://Server/sites/Site/m/ )用来重定向请求至mobile的default.aspx页。然后该default.aspx页会将用户重定向到实际的主页。根据目前站点定义的类型, 会依次进行下列处理:

  1. default.aspx中仅放置了一个控件,他告诉运行时寻找名为"MobileHomePageRedirect"的RenderingTemplate。
  2. 运 行时会搜索所有位于Local_Drive:\Programe Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES下的*.ascx文件,通过RenderingTemplate找到该 名称。最终会在MobileDefaultTemplates.ascx文件中找到一个。
  3. MobileHomePageRedirect控件的Template属性将运行时指向一个SPMobileWebUrlRedirect类的对象。
  4. SPMobileWebUrlRedirect 对象用Mobile_SiteTypeID_HomePage_Redirect的方式构建了另一个RenderingTemplate的名称,其中 SiteTypeID是WSS站点定义的名称,比如STS,或一个自定义站点定义的ID号,比如10001。(要查找有关mobile网站重定向的更多信 息,可以参考SPMobileWebUrlRedirect中的备注节)
  5. 通过第二个RederingTemplate,运行时再次搜索 ...\12\TEMPLATE\CONTROLTEMPLATES下的所有*.ascs文件。
    • 如 果SiteTypeID为BLOG,运行时将从MobileDefaultTemplate.ascx中找到 Mobile_BLOG_HomePage_Redirect RenderingTemplate。该控件的Template属性将运行时指向一个SPMobileUrlRedirection类的对象,该对象的 PageFileName属性指定了bloghome.aspx为最终的主页。
    • 如 果SiteTypeID不是BLOG,且没有创建自定义的.ascx文件,运行时将使用MobileDefaultTemplate.ascx中的 Mobile_Default_HomePage_Redirect RenderingTemplate。该控件的Template属性将运行时指向一个SPMobileUrlRedirect类的对象,其 PageFileName属性指定mbllists.aspx为最终的主页。

您可以创建一个自定义控件来将用户重定向到您预先设计好的mobile主页。

步骤:

  1. 创建一个自定义的mobile主页;比如,MyHome.aspx。
  2. 将新主页放置在下列目录中:
    Local_Drive:\Programe Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS\MOBILE
  3. 创建一个自定义控件模板文件。比如,MyMobileControlTemplate.ascx(内容参考下面的例子)
  4. 将新控件模板放置在下面的目录:
    Local_Drive:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES
  5. 重启IIS,然后浏览网站看看定制的效果。

注意
如果您是在电脑上用mobile设备模拟器,而不是实际的mobile设备,您可能还需要在每次修改好后删除internet临时文件来保证看到的是页面的新版本。

例子

下面的例子展示了一个自定义.ascx文件的内容(比如,MyMobileControlTemplate.ascx)其中定义了一个控件模板。当 mobile设备访问一个使用"MySiteType"站点定义的网站时,运行时将被导向到主页MyHome.aspx。注意该定制文件的下面几点内容:

  • 所有带“%@”标记的语句都是公式化的套话,在所有的定制页面中都是如此。
  • “MySiteType”可以是:
    • 工作组站点定义的名称:“STS”。MPS,CENTRALADMIN,和WIKI站点定义不支持通过mobile设备来访问。BLOG站点定义可以通过mobile设备来访问,但是已经有一个名为Mobile_BLOG_HomePage_RedirectRenderingTemplate,定义在MobileDefaultTemplates.ascx文件中。您不可以修改该文件。您可以在自定义的.ascx文件中创建第二个RenderingTemplate也命名为Mobile_BLOG_HomePage_Redirect,但是这样会有破坏现有其他基于已有Mobile_BLOG_HomePage_Redirect 的定制或第三方解决方案的风险。
      注意:
      WSS内置的RenderingTemplate会先加载,所以当相同名称的自定义模板加载时会覆盖标准的渲染模板。如果两个或更多的自定义 RenderingTemplate具有相同的名称,则按文件名的字母顺序排在最后的将会覆盖其他的。给定文件中包含两个或更多的同名模板的,这些模板都 不会被加载。
      注意
      网站定义的名称是在WebTemp.xml文件的Template元素的Name属性中设定的。
    • 任何已创建的自定义网站定义的ID号(不是Name)
      注意
      网站定义的ID号是在WebTemp.xm文件的Template元素的ID属性中设定的。

重要提醒

在站点定义文件Onet.xml中站点定义配置的Configuration元素必须具有一个WebFeature元素,并且该元素必须包含到以下这个Feature元素的重定向:

<Feature ID="F41CC668-37E5-4743-B4A8-74D1DB3FD8A4" />(注:这是继承自STS网站定义的标志)。

C#

<%@ Control Language="C#" %>
<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="mobile" Namespace="System.Web.UI.MobileControls" Assembly="System.Web.Mobile, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" %>
<%@ Register TagPrefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="SPMobile" Namespace="Microsoft.SharePoint.MobileControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<SharePoint:RenderingTemplate RunAt="Server" ID="Mobile_MySiteType_HomePage_Redirect">
  
<Template>
    
<SPMobile:SPMobileUrlRedirection RunAt="Server" PageFileName="MyHome.aspx" />
  
</Template>
</SharePoint:RenderingTemplate>


posted @ 2008-07-09 22:25  Sunmoonfire  阅读(733)  评论(0编辑  收藏  举报