4

バリエーションのある SharePoint 発行サイトがあります。パンくずリストには、デフォルトで次のように表示されます。

バリエーション ルート > 英語サイト > 一部のページ 表示したいのは、「ホーム」 > 一部のページです。ここで、ホームは英語のサイト ルートを指します。

カスタム サーバー コントロールを作成せずにこれを実現する方法はありますか?

4

2 に答える 2

2

レベルの正確な数がわかっている場合は、次のような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>

説明の値が「ホーム」の場合、表示されます。

于 2009-06-16T19:38:25.880 に答える
0

つい最近、この問題に対処する新しいメニュー コントロールをいくつか作成しました。私のコントロールは、カスタムの ~Variation/ トークンを StartingNode として受け入れます。これにより、サイト コレクションのルートではなく、バリエーションのホームから始まるブレッドクラムを作成できます。詳細については、@ http://blog.mastykarz.nl/templates-based-menu-control-sharepoint/をご覧ください。

于 2009-06-17T16:07:00.737 に答える