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>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章