SharePoint 開發

在 SharePoint 2010 中建置資訊架構

Shahram Khosravi,博士

下載程式碼範例

發行的 Microsoft SharePoint 2010 看到新的電子反企業內容管理 (制) 功能加入至 [共同作業軟體。本文將告訴您,如何利用這些新功能用來建置具有彈性、 可延伸和可維護的資訊架構的入口網站的下列兩種類型:

  • 網際網路/內部/外部網路端發行入口網站
  • 知識管理入口

我將引導您完成的設計和實作數個可以用來實作這些入口網站的資訊架構的自訂 SharePoint 元件。

建築/內部/外部網路網際網路的發佈入口網站的資訊架構

一般而言,網際網路/內部/外部網路端發行入口網站遵循嚴格的 「 引導式的瀏覽模型 GUI 項目,例如功能表用於引導使用者他們所需要的內容。這類的入口網站通常會有的頂端和左邊的巡覽功能表。

頂端瀏覽功能表通常是可讓使用者從入口網站分類法的第一個和第二層的 AspMenu。左方瀏覽功能表通常是可讓使用者從入口網站分類法的第三個和第四個 (或可能是第五個) 層級的 AspMenu。

入口網站的內容分為一組表單第一層的類別。我將使用下列命名慣例的類別: 詞彙ii都會採用儲存整數值。例如,第一個和第二個類別則名為 Term1 和 Term2,分別。

每個類別中的內容再分成一組的第二層形成子類別。我將使用下列命名慣例的子類別: 詞彙ijij 採用整數值。例如,第一個類別的第一個子類別被命名為 Term11。

我們找到您想要的資料粒度,則會繼續這個分類的內容。圖 1 會顯示此入口網站的分類。


圖 1 入口網站分類法

這類的入口網站分類法通常是透過建立適當的站台結構的實作在 SharePoint 2007。我會先建立不同的站台,每個類別。然後我會建立個別的子類別,為每個類別網站下的個別子網站,並等。圖 2 會顯示 「 入口 」 網站結構。


圖 2 個 「 入口 」 網站結構

基本上,每個類別、 子類別、 sub-subcategory 等等有自己專用的站台。這個專用的網站包含網頁文件庫,其中包含該網站的網頁。如果我使用共享的網路語言,我可以說網站的網頁文件庫中的所有網頁隱含都標有 [類別]、 [子類別] 或 [站台代表的 sub-subcategory。一來,我隱含標記一堆網頁和類別、 子類別或 sub-subcategory 建立代表該類別、 子類別或 sub-subcategory 的站台上。如此一來,我建立新的隱含標記 (或條件) 藉由建立新的站台。

頂端瀏覽 AspMenu 會顯示這些類別 (第一次層) 和它們的子類別 (第二層)。使用者從這個 AspMenu,巡覽至隱含標記該類別或子類別的頁面中選取的類別或子類別。

當使用者從頂端瀏覽] 功能表中選取一個子類別時,在左方的導覽 AspMenu (快速啟動) 會顯示相關聯的子類別的 sub-subcategories。使用者選取此巡覽至頁面隱含標記該 sub-subcategory 的 AspMenu sub-subcategory。指定網站的網頁文件庫可能包含多個網頁,這表示多個頁面可能會隱含標記與相同的類別、 子類別或 sub-subcategory。[快速啟動顯示隱含標有相同的 sub-subcategory 的所有網頁的連結。

比較的圖 1圖 2 入口網站分類法或資訊架構直接反映 「 入口 」 會顯示網站結構的清楚。這讓資訊架構的彈性,並介紹下列問題:

  • 建立新的隱含標記需要建立新的站台的站台管理權限。
  • Retagging 頁面時,需要實際移動到另一個網站的網頁。
  • 重新組織資訊架構必須實際移動和刪除網站和網頁。
  • 內容作者不可以跨多個類別、 子類別、 sub-subcategories 等等的共用同一個頁面。他們必須建立的每個類別、 子類別等不同的頁面,因為每個分開的網站。只出-預設選項是將頁面複製到個別的網站。本解決方案引進了兩個的可用性問題。首先,內容作者必須將頁面複製到許多不同的地方。第二,內容作者變更的內容,在一個頁面中,每次他必須返回到所有這些網站新增至相同的更新或重新複製頁面中所有的複本。這很容易產生錯誤。
  • 因為變更分類,您必須在站台結構中,牽涉到許多時間和精力,修改結構分類法都相當嚴謹。分類是緊密結合的資訊會實際儲存在網站集合的方式。

輸入 SharePoint 2010 電子反制。您現在可以在受管理的中繼資料服務的應用程式,讓您管理它集中實作您的入口網站分類法。這種實作不再取決於您的入口網站結構:

  • 您不需要提供新的網站,只是要建立新的隱含標記。您只想要的點在入口網站分類法詞彙存放區中新增新的用語。如此一來,您現在可以讓您的網頁在同一個站台相同的網頁文件庫因為延展性的文件庫已經不在 SharePoint 2010 的問題。本文會假設所有的頁面會維持在單一網站中的單一網頁文件庫。
  • 您可以 retag 新術語的網頁,而不必實際移動的頁面。
  • 您可以只重新詞彙存放區中的您分類組織而不必實際加以移動或刪除網站和網頁,以重新組織您分類。
  • 您可以跨多個類別,子類別等等依只要標記含多個頁面共用相同的頁面,其中每一詞表示類別、 子類別等 — 而不需要實際跨站台複製頁面。

如所示,我將為單一詞彙集,實作入口網站分類法圖 3


圖 3 的受管理的中繼資料服務應用程式中的 [入口網站分類法的實作

不過,實作入口網站分類法詞彙存放區,而不是入口網站結構中引入了下一節所述的兩個挑戰。

TaxonomyDataSource 控制項

首先,v4.master 的主版頁面會隨附 AspMenu 會顯示上方的巡覽功能表。這個控制項是繫結至網站導覽資料來源控制項所使用的提供者來擷取網站導覽資料從入口網站結構。這不要在此情況下運作,因為我想來自詞彙存放區,而非入口網站的實體站台結構網站導覽資料。

其中一個選擇是要實作自訂網站導覽提供者從詞彙存放區擷取適當的詞彙。另一個選擇是要實作自訂的資料來源控制項。因為會使用後者 ASP。NET 隨附了名為 XmlDataSource,我可以輕易地擴充以達到我的目標的強大的資料來源控制項。我會命名這個 TaxonomyDataSource 的自訂資料來源控制項。

TaxonomyDataSource 會公開一個名為 IsGlobal 的布林值屬性。我將主版頁面中包含兩個執行個體的 TaxonomyDataSource。一個執行個體將會繫結至呈現頂端瀏覽功能表 AspMenu。這個執行個體的 IsGlobal 屬性會設定要擷取所有的搜尋文字的條件為 true,則設定包含入口網站分類法。這可讓頂端瀏覽功能表顯示所有的類別和其子類別。請注意,類別和其各自的子類別此詞彙中的子系和後代子條款但沒有設定。

第二個執行個體將會繫結至呈現 (快速啟動) 的左方瀏覽功能表 AspMenu。將這個執行個體的 IsGlobal 屬性設定為 false,擷取只有目前的字彙的 subterms。讓我深入瞭解我表示由 「 目前的詞彙"。

回想一下當使用者從頂端瀏覽] 功能表中選取一個子類別,左方瀏覽功能表,必須顯示 sub-subcategories 相關聯的子類別的清單。在此內容中的目前詞彙是子類別。第二個執行個體基本上會傳回目前詞彙的子系和後代子來說,這是不但是 sub-subcategories 和 sub-sub-subcategories。

TaxonomyDataSource 會覆寫入口網站分類法擷取詞彙存放區的 [資料] 屬性。[資料] 屬性的主要目標是建立 XML 文件 XmlDataSource 用來建立,它會傳遞至 AspMenu 的節點。這個屬性先使用 SharePoint 2010 管理中繼資料 API 來存取詞彙集,其中包含入口網站的分類,如下所示:

TaxonomySession taxonomySession = new TaxonomySession(SPContext.Current.Site);
TermStore termStore = taxonomySession.TermStores[this.TermStore];
Group group = termStore.Groups[this.Group];
TermSet termSet = group.TermSets[this.TermSet];

屬性會使用 IsGlobal 時所設定的詞彙中的所有條款:

termsToReturn = termSet.Terms;

如果 IsGlobal 是 false,屬性會先存取目前的字彙,透過 CurrentTermId 的查詢字串參數的 GUID。 然後,它會使用目前的詞彙中的子系和後代子條款:

Term currentTerm = taxonomySession.GetTerm(
  new Guid(this.Page.Request.QueryString["CurrentTermId"]));
termsToReturn = currentTerm.Terms;

[資料] 屬性會接著開始建立 XML 文件。 此文件中有一個文件元素名為 <Terms>,其中包含 <Term> 的階層架構 項目。 TaxonomyDataSource 會建立獨立的 <Term> 項目來代表每個詞彙,它會從 [詞彙] 存放區提取。 以下是這種 XML 文件的範例:

<Terms>
  <Term Name="Term1" URL="PageUrl?CurrentTermId=">
    <Term Name="Term11" URL="PageUrl?CurrentTermId=">
      <Term Name="Term111" URL="PageUrl?CurrentTermId="/>
    </Term>
  </Term>
  <Term Name="Term2" URL="PageUrl?CurrentTermId=">
    <Term Name="Term21" URL="PageUrl?CurrentTermId="/>
  </Term>
</Terms>

請注意,<Term> 項目具有名為名稱和 URL 的兩個屬性。 Name 屬性設定為一詞的名稱和 URL 設定為頁面標記的該詞彙的 URL。 這個 URL 包含名為 CurrentTermId,其中包含目前字彙的 GUID 的查詢字串參數。

[資料] 屬性會逐一查看擷取的文字,並叫用 GetXmlFragment 方法,每個列舉的詞彙。 這個方法的主要目標是建立 <Term> 項目,表示這個列舉的詞彙和此 <Term> 項目的 <Term> 表示列舉的詞彙中的子系和後代子條款的子元素:

foreach (Term term in termsToReturn)
{
  GetXmlFragment(publishingPageCollection, term, ref xml);
}

請注意 TaxonomyDataSource 會使用 SharePoint 發佈 API,在存取集合包含發佈的頁面。

接下來,我將討論 GetXmlFragment 的實作。 不過,首先您必須了解標記的網站欄,也就是受管理的中繼資料型別的的重要性。 您必須建立這個網站的資料行繫結至包含入口網站分類法的詞彙集並將站台] 資料行新增到發佈的網頁版面配置的相關內容類型。 [標記] 欄位可讓內容作者來標記發佈的網頁,從入口網站分類法的條款。

GetXmlFragment 是由三個部分所組成。 以圖 4 所示,第一個組件搜尋網頁文件庫中的頁面會附上指定詞彙,呈現 <Term> 的第一頁 代表一詞的項目。

圖 4 GetXmlFragment 的第一個部分

foreach (PublishingPage publishingPage in publishingPageCollection)
{
  TaxonomyFieldValueCollection values =
    publishingPage.ListItem["Tags"] as TaxonomyFieldValueCollection;
               
  foreach (TaxonomyFieldValue value in values)
  {
    if (value != null && value.TermGuid == term.Id.ToString())
    {
      url = publishingPage.Uri.AbsoluteUri;
      xml += "<Term Name='" + term.Name + "' URL='" + url +
        "?CurrentTermId=" + term.Id.ToString() + "'>";
      closeTerm = true;
      defaultPublishingPage = publishingPage;
      break;
    }
  }
 
  if (closeTerm)
    break;
}

這個 <Term> 的 URL 屬性 項目設定為此網頁的 URL 和 CurrentTermId 的查詢字串參數設定為這個詞彙的 GUID。 此頁面指定詞彙會做為預設的網頁。 如果我要建立網站來代表指定的詞彙,這基本上會模擬網站的預設頁面。

中的程式碼圖 4 基本上會產生下列 XML 片段:

<Term Name='TermName' URL='DefaultPageURL?CurrentTermId=GUID>

請注意,<Term> 項目不是尚未關閉,因為我仍需要逐一查看這個詞彙中的子系和後代子條款,並呈現 <Term> 在此 <Term> 內的子元素 每個項目列舉子系和後代子字彙。 這正是 GetXmlFragment 的第二部分的用途:

foreach (Term cterm in term.Terms)
{
  GetXmlFragment(publishingPageCollection, cterm, ref xml);
}

GetXmlFragment 最後關閉父 <Term> 項目。 接下來,GetXmlFragment 會呈現 <Term> 其餘的頁面中的頁面項目中,文件庫標有相同的詞彙。 這些 <Term> 項目會被視為同層級的 <Term> 項目,表示預設的網頁。 這可讓呈現標有目前的詞彙的所有網頁連結的快速啟動]。 這基本上模擬的站台的非預設網頁,如所示,我像來代表一個網站,以圖 5

[圖 5 GetXmlFragment 的第三個部分

if (!this.IsGlobal)
{
  foreach (PublishingPage publishingPage in publishingPageCollection)
  {
    if (publishingPage == defaultPublishingPage)
      continue;
 
    TaxonomyFieldValueCollection values =
      publishingPage.ListItem["Tags"] as TaxonomyFieldValueCollection;
                   
    foreach (TaxonomyFieldValue value in values)
    {
       if (value != null && value.TermGuid == term.Id.ToString())
       {
         url = publishingPage.Uri.AbsoluteUri;
         xml += "<Term Name='" + publishingPage.Title + "' URL='" +
           url + "?CurrentTermId=" + term.Id.ToString() + "'/>";
         break;
       }
     }
   }
 }

圖 6 示範使用 TaxonomyDataSource 的主版頁面為基礎的網頁。

使用 TaxonomyDataSource 的主版頁面的 [圖 6 範例資料頁基礎
要 TaxonomyDataSource,感謝上方和左邊的巡覽功能表會顯示入口網站分類法,集中維護詞彙存放區中的各層。

ListSiteMapPath 控制項

如前所述,實作詞彙存放區,而不是入口網站結構中的 [入口網站分類法介紹兩個挑戰。在前一節中我所討論的第一項挑戰,並提供解決方案。本節討論的第二個挑戰,並提供解決方法的解決方案。

v4.master 包含名為 PopoutMenu,會呈現名為 ListSiteMapPath 的控制項的控制項。ListSiteMapPath 會呈現在使用者按一下 PopoutMenu,會顯示為網頁上的圖示會出現階層連結。

繼承自 SiteMapPath,ListSiteMapPath (也就是傳統的控制,來呈現階層連結)。此外,default.master 會使用 SiteMapPath,而 v4.master 是使用 ListSiteMapPath。

ListSiteMapPath 公開 (expose) 名為 SiteMapProviders 的站台地圖提供者名稱的逗號分隔清單的屬性。因此,ListSiteMapPath 可以使用一個以上的提供者。ListSiteMapPath 會逐一查看這些提供者,並採取下列步驟,每個列舉的提供者。第一次叫用提供者,傳入要傳回目前網站導覽節點的 HttpContext 的 FindSiteMapNode 方法。它然後以遞迴方式叫用 GetParentNode 方法來存取所有祖系網站導覽節點的目前網站導覽節點一路到根網站導覽節點的提供者。最後,它會呈現為從根網站網站導覽節點,一直到目前網站導覽節點開始每個祖系網站導覽節點的階層連結中的項目。

如您所見,ListSiteMapPath 會呈現完成的項目階層架構的每個列舉的網站導覽提供者。如此一來,每個網站導覽提供者能促成階層連結。這可讓呈現不同類型的來源從網站導覽節點的 ListSiteMapPath。在這個案例中,我想要呈現的入口網站分類法詞彙存放區中維護網站導覽節點的 ListSiteMapPath。我將實作自訂網站導覽提供者名稱為 TaxonomySiteMapProvider,要達到此目的。

TaxonomySiteMapProvider 會覆寫的 FindSiteMapNode,其中它會使用指定的內容來存取個別的 SPListItem。此內容基本上是目前的內容。然後,這個方法存取的 URL]、 [識別碼] 及 [此清單項目的標題,並建立網站導覽節點來代表它。請記住這個在發佈網站的清單項目表示發行的頁面。

ListSiteMapPath 叫用這個方法,以存取目前網站導覽節點:

SPContext spContext = SPContext.GetContext(context);
SPListItem listItem = spContext.ListItem;
string url = listItem.Url;
string key = listItem.ID.ToString();
string title = listItem.Title;
return new SiteMapNode(this, key, url, title);

ListSiteMapPath 再叫用 GetParentNode,傳遞目前網站導覽節點來傳回表示目前節點的父代網站導覽節點。 請注意目前網站導覽節點代表目前的發行頁面和父代網站導覽節點代表此發佈網頁的父代。 發佈網頁的父代在此情況下是詞彙的發行網頁標記的父代一詞與目前的發行頁面標記。

TaxonomyDataSource 覆寫 GetParentNode 的第一次存取新的 SharePoint 清單,也就是只包含發佈網頁的網頁文件庫。 然後建立共同作業應用程式標記語言 」 (CAML) 查詢來搜尋目前的發行網頁的這份清單,讓它能夠存取與目前的頁面會標記這個詞彙。 這次,我不使用發行 API 來存取這個發佈的頁面。 使用 CAML 查詢提供較佳的效能,特別是當網頁文件庫包含數萬個頁面。

GetParentNode 的下列程式碼區段基本上會傳回發行頁,表示指定的節點,然後擷取為頁面標記的名詞的 [標記] 欄位的值:

SPQuery query = new SPQuery();
 
query.ViewFields = "<FieldRef Name='Tags'/>";
query.Query = "<Where><Eq><FieldRef Name='ID'/><Value Type='Integer'>" +
  node.Key + "</Value></Eq></Where>";
SPListItemCollection listItems = list.GetItems(query);
SPListItem listItem = listItems[0];
 
TaxonomyFieldValueCollection values =
  listItem["Tags"] as TaxonomyFieldValueCollection;
TaxonomyFieldValue value = values[0];
 
Guid termGuid = new Guid(value.TermGuid);
TaxonomySession taxonomySession = new TaxonomySession(context.Site);
Term term = taxonomySession.GetTerm(termGuid);

接下來,GetParentNode 存取目前的詞彙父條件,並搜尋網頁文件庫發行網頁標記的此父術語。 它最後存取的 URL 和此發行的頁面 ID,並使用這兩項資訊,加上的表單父代網站導覽節點,父詞彙,名稱中所示圖 7

圖 7 建立父代網站導覽節點

Term parentTerm = term.Parent;
if (parentTerm != null)
{
  int[] wssIds = TaxonomyField.GetWssIdsOfTerm(context.Site, parentTerm.TermStore.Id,
    parentTerm.TermSet.Id, parentTerm.Id, false, 500);
  query = new SPQuery(list.DefaultView);
  query.Query =
    "<Where><In><FieldRef LookupId='True' Name='Tags'/><Values>";
  foreach (int wssId in wssIds)
  {
    query.Query += ("<Value Type='Integer'>" + wssId.ToString() + "</Value>");
  }
  query.Query += "</Values></In></Where>";
    listItems = list.GetItems(query);
    listItem = listItems[0];
 
    string url = listItem.Url;
    string key = listItem.ID.ToString();
    string title = parentTerm.Name;
 
      return new SiteMapNode(this, key, url, title);
}

中的程式碼圖 7 TaxonomyField 類別的 GetWssIdsOfTerm 靜態方法會使用。這個方法會傳回 Windows SharePoint Services (WSS) Id,指定的詞彙,從分類隱藏清單中,也就是在網站集合層級,SharePoint 快取網站集合中的詞彙 SharePoint 清單。每次您標記新術語的項目時,SharePoint 會自動新增一個項目隱藏清單該詞彙。相同的文字可能此分類隱藏清單中有多個項目,如果重複使用的詞彙,例如。

GetWssIdsOfTerm 會傳回代表指定的詞彙分類隱藏清單中的所有清單項目的 Id。您必須使用這些識別碼 CAML 查詢中篩選根據受管理的中繼資料欄位,也就是 [標記] 欄位在此情況下。

圖 8 示範繫結至 TaxonomySiteMapProvider ListSiteMapPath。請注意,控制項會呈現目前頁面所屬的整個階層架構。


圖 8 繫結至 TaxonomySiteMapProvider ListSiteMapPath

建置資訊架構知識管理入口

如所述,傳統的 「 引導式巡覽方法會透過一組以幫助他們找出他們所需要的內容功能表選項的使用者。這是截然不同共享的網路入口網站,例如下列所示的方法用來協助使用者找到的內容:

  • 搜尋引擎: 使用者執行尋找內容的搜尋索引的搜尋查詢。
  • 中繼資料篩選: 使用者使用篩選來篩選搜尋結果的中繼資料。
  • Wiki 樣式連結: 網頁 wiki 樣式連結到連結在一起。使用者會使用這些連結,各網頁間巡覽。
  • 彙總套件 Web 組件: 網頁包含彙總內容中,從不同位置的彙總套件 Web 組件。使用者使用這些 Web 組件中的連結,各網頁間巡覽。

共享的網路入口網站將升級相對於線性的 「 引導式方法,用傳統的入口網站的瀏覽的釋放流程方法。因此,使用者可能會到達的頁面,以不同的方式。在下列章節中,我將討論設計和實作的知識管理入口網站的共享的網路瀏覽模型的利用。王小紅 Squires 和 DeMaris 答對顯示這項設計在 Microsoft SharePoint 會議 2009年工作階段。我將討論這項設計的某些方面,也呈現自己的自訂和它的增強功能。下一節將討論此知識管理入口網站的首頁。

首頁

首頁的主要目標是要提供下列兩個功能: 搜尋] 方塊中,彙總套件 Web 組件。[搜尋] 方塊中,可讓使用者搜尋內容。這是首頁的主要元件。彙總套件 Web 組件合從整個企業的不同位置的內容。

此內容可能是某些使用者的興趣的任何項目。例如,可能會顯示在企業中的大部分檢視,以及最搜尋內容的使用者很有幫助。SharePoint 2010 隨附的全新的 Web 分析網頁組件,您可以設定要顯示這類內容。

知識管理入口通常儲存在中央儲存機制中的文件。SharePoint 會具有名為文件中心的全新的網站範本。您可以從這個網站] 範本來儲存您的文件來建立網站。您可以新增網頁組件內容查詢彙總最近上傳的文件網頁。

當使用者使用顯示在首頁的 [搜尋] 方塊來執行搜尋查詢時,她是前往搜尋結果網頁。這個頁面會隨附細分面板標準 SharePoint 的全新的搜尋結果網頁。此面板中包含使用者可用來篩選搜尋結果的類別。任何一種是結果型別。

使用者選擇只檢視 Web 網頁的 Web 網頁相關聯的結果型別。細分面板也會顯示這些網頁的標記的文字。這些都是從入口網站分類法的條款。使用者會使用這些條款,進一步篩選這些網頁以獲得所需的頁面。然後使用者巡覽至頁面,這基本上是企業 wiki 頁面的搜尋結果。

企業 Wiki 頁面的結構

我的知識管理入口網站中的所有網頁都建立相同自訂新版的企業 wiki 頁面配置。

若要自訂網頁版面配置,我先取代標記欄位控制項的 Wiki 類別欄位的控制項。使它只會出現在頁面處於編輯模式時,我也會將 EditModePanel 的標記欄位控制項。因此我不想標記欄位控制項顯示在 [顯示模式是因為我要使用左邊的巡覽功能表呈現與目前的頁面標記而不是標記欄位控制項的文字。您會看到,使用 AspMenu 能讓我不只呈現目前的詞彙,同時也是目前詞彙的 subterms,子 subterms,以此類推。

我還需要在 TaxonomyDataSource 的實作中進行變更,因此控制項不使用查詢字串,以取得目前的詞彙。相反地,它應該取得目前的名詞,從目前頁面的 [標記] 欄位。這是因為我不會再接受使用者頂端瀏覽功能表,也就是如何完成在傳統的入口網站中使用 「 引導式巡覽模式中執行。使用者可以從任何地方存取目前的頁面。例如,可能有 wiki 連結上將使用者帶到目前的頁面部份網頁。因此,沒有查詢字串參數,會告訴您有關目前的詞彙。這也表示目前一詞可能不再是單一字彙,因為目前的網頁可能已標記的多個字詞。

新版本的 TaxonomyDataSource 第一次存取所有的搜尋文字與標記目前頁面。它然後逐一查看這些條件,並建立這些條款和其子代的條款的 XML 片段中所示圖 9

圖 9 新版的 TaxonomyDataSource

TaxonomyFieldValueCollection values =
  SPContext.Current.ListItem["Tags"] as TaxonomyFieldValueCollection;
Term currentTerm = null;
foreach (TaxonomyFieldValue value in values)
{
  currentTerm = taxonomySession.GetTerm(new Guid(value.TermGuid));
  GetXmlFragment(publishingPageCollection, currentTerm, ref xml);
  termsToReturn = currentTerm.Terms;
 
  if (termsToReturn != null)
  {
    foreach (Term term in termsToReturn)
    {
      GetXmlFragment(publishingPageCollection, term, ref xml);
    }
  }
}

圖 10 顯示根據企業 wiki 頁面版面配置我自訂新版的網頁。


圖 10 A] 頁面為基礎的自訂的企業 Wiki 版面配置

請注意快速啟動會顯示目前的條款,目前的詞彙] 與 [頁面標有目前的詞彙的 subterms 和 subterms 的目前文字。也請注意頁面並不會顯示標籤的 [欄位] 控制項中的顯示模式。

圖 11 中的 [標記] 欄位會顯示在編輯模式中顯示的頁面,讓內容作者標記或 retag 網頁。


在編輯模式]、 [允許標記] 或 [Retagging] 圖 11 A 頁面

到 TaxonomyDataSource,感謝左方瀏覽功能表會公開與本頁相關的所有網頁的連結。它會公開不只網頁標有相同的文字與目前的網頁,同時也會標示這些詞彙的子代條款之頁面的連結。您可以增強,讓內容作者指定是否顯示只有子規定條款與目前的頁面標記,子條款和後代子條款,或子條款、 後代子條款及高等後代子詞彙中,選擇 TaxonomyDataSource 等等。您也可以讓作者選擇是要顯示的文字與目前的頁面標記,父條款和祖父系條款,父條款等等。

因此,TaxonomyDataSource 會成為功能強大的工具,以確保當使用者造訪網頁時,頁面會提供使用者在整個企業的所有相關頁面的連結。加入和標記的一樣,與目前的頁面標記或子代相同合約的條款更多的頁面時,TaxonomyDataSource 自動挑選它們,以便快速啟動包含這些新頁面的連結,會自動更新。TaxonomyDataSource 」 可讓入口網站分類法與一般的執行緒鏈結同時使用所有的網頁和整個企業的文件。

[快速啟動的連結是一個方法可讓您的入口網站的網頁之間的連線。另一種方法是使用樣式 wiki 頁面連結。還有另一個方法是使用彙總套件 Web 組件,將在整個企業中的相關內容。例如,您可以提取文件設定內容的 [查詢] Web 組件,從您的文件中心,並篩選根據目前的網頁標記的條款。使用者將新的文件上載到文件中心,並加上標籤標記與目前網頁相同的條款,此內容查詢的網頁組件會自動更新為顯示與這些新文件。

內容作者將新的標記加入至頁面,編輯現有的標籤或移除現有的標籤,在頁面上所有的彙總套件 Web 組件的內容和內容的快速啟動自動變更。這是範例的內容的社交網路,頁面會顯示分類為基礎的內容。

TaxonomyDataSource,wiki 樣式連結和彙總套件 Web 組件會轉換成 forefront 的提取從基礎的搜尋文字與標記頁面至某個位置,篩選企業內的相關的內容的網頁。網頁不會再明確結構透過實體的入口網站的結構。相反地,它們是隱含化透過它們有透過分類、 wiki 樣式連結和彙總套件 Web 組件的關聯性。

有彈性且可自訂的資訊架構

您完成新的 SharePoint 2010 電子反制功能說明建置及實作的網際網路/內部/外部網路端發行和知識管理入口彈性的資訊架構。這樣的彈性會變得更重要的 Web 網頁和網站設計形成以容納新的方法,使用網際網路的社交網路的站台內爆炸的舉例。雖然我所呈現的設計和實作數個可以用來實作資訊結構的自訂 SharePoint 元件,還有更多,就可以完成,並建議您瀏覽新的可能性。

Shahram Khosravi 專門負責且廣泛的工業遇到 SharePoint 架構、 設計和開發。他是下列書籍的作者: 「 專家 WSS 3.0 和 MOSS 2007 程式設計 」 (Wrox,2008年,) 」 專業人員 SharePoint 2007 工作流程程式 」 (Wrox,2008年,)"ASP。NET 的 AJAX 程式設計人員參考 」 (Wrox,2007年,)"ASP。NET 2.0 的伺服器控制項和元件開發 」 (Wrox,2006年) 和"7 IIS 和 ASP。NET 整合程式設計 」 (Wrox,2007年)。