バリエーションのある SharePoint 発行サイトがあります。パンくずリストには、デフォルトで次のように表示されます。
バリエーション ルート > 英語サイト > 一部のページ 表示したいのは、「ホーム」 > 一部のページです。ここで、ホームは英語のサイト ルートを指します。
カスタム サーバー コントロールを作成せずにこれを実現する方法はありますか?
バリエーションのある SharePoint 発行サイトがあります。パンくずリストには、デフォルトで次のように表示されます。
バリエーション ルート > 英語サイト > 一部のページ 表示したいのは、「ホーム」 > 一部のページです。ここで、ホームは英語のサイト ルートを指します。
カスタム サーバー コントロールを作成せずにこれを実現する方法はありますか?
レベルの正確な数がわかっている場合は、次のようなSiteMapPathを使用できます。
<asp:SiteMapPath runat="server" ParentLevelsDisplayed="1" />
それ以外の場合、SiteMapPathは常に現在使用中のSiteMapProviderに対して直接実行され、SiteMapPathのレンダリングにフックして、次のようなチェックを行うことができます。
protected void SiteMapPath_ItemCreated(object sender, SiteMapNodeItemEventArgs e)
{
if (e.Item.ItemType == SiteMapNodeItemType.Root ||
(e.Item.ItemType == SiteMapNodeItemType.PathSeparator &&
e.Item.ItemIndex == 1))
{
e.Item.Visible = false;
}
}
これにより、SiteMapPathにルートノード(および最初のセパレーター)が表示されなくなります。
ノードに「ホーム」を表示させたい場合は、次のような別の値に対してバインドできます。
<asp:SiteMapPath ID="siteMapPath" runat="server"
Pathseparator="/"
OnItemCreated="SiteMapPath_ItemCreated">
<NodeTemplate>
<a href='<%# Eval("url") %>'><%# Eval("description") %></a>
</NodeTemplate>
<CurrentNodeTemplate>
<%# Eval("title") %>
</CurrentNodeTemplate>
</asp:SiteMapPath>
説明の値が「ホーム」の場合、表示されます。
つい最近、この問題に対処する新しいメニュー コントロールをいくつか作成しました。私のコントロールは、カスタムの ~Variation/ トークンを StartingNode として受け入れます。これにより、サイト コレクションのルートではなく、バリエーションのホームから始まるブレッドクラムを作成できます。詳細については、@ http://blog.mastykarz.nl/templates-based-menu-control-sharepoint/をご覧ください。