質問

SharePoint 2010 Standard を使用しており、発行機能が有効になっているチーム サイトがあるシナリオがあります。カスタム マスターページ (v4.master を少し変更したバージョン - 追加のカスタム コントロールを含む) とカスタム CSS があります。

問題は、サイト コレクションのトップ レベル以外のサイトでは、トップ ナビゲーション コントロールがコンテンツ ページのナビゲーション設定を無視しているように見えることです。

カスタム マスター ページは、システム マスター ページおよびサイト マスター ページ (チーム サイトに必要) として設定され、すべてのナビゲーションの変更は _layouts フォルダー内のどのページにも完全に表示されます。ただし、ユーザーが作成したページ (デフォルトでは「Wiki ページ」のタイプに設定されています。私の知る限り、~14/TEMPLATE/DocumentTemplates/wkpstd.aspx テンプレートを使用します) では、正しいナビゲーションが表示されません。

表示されるナビゲーションは次のとおりです。

  • トップレベルのサイトコレクション (正しい):HomeLink [手動で作成したリンク]、Link1、Link2、Link3、Link4
  • サブサイト:HomeLink (設定が「親から継承」に設定されているため、不正解)

すべてのナビゲーション設定は正しく、他の環境で再確認およびテストされています。

これが機能しない理由がわかる人はいますか?使用されている可能性があるすべてのテンプレートで、PlaceHolder の競合または上書きがないか確認しましたが、使用している標準の PlaceHolder (PlaceHolderTopNavBar および PlaceHolderhorizo​​ntalNav) を参照しているものは見つかりませんでした。

メニューのレンダリングに使用されるコントロールはデフォルトです。

<SharePoint:AspMenu ID="TopNavigationMenuV4"
Runat="server" EnableViewState="false"
DataSourceID="topSiteMap"
AccessKey="<%$Resources:wss,navigation_accesskey%>"
UseSimpleRendering="true" UseSeparateCss="false"
Orientation="Horizontal" StaticDisplayLevels="5"
MaximumDynamicDisplayLevels="0" SkipLinkText=""
CssClass="s4-tn" />

<asp:SiteMapDataSource ShowStartingNode="False"
SiteMapProvider="GlobalNavSiteMapProvider"
id="topSiteMap" runat="server" />

前もって感謝します

役に立ちましたか?

解決 2

OK、問題の原因がついにわかりました。

チーム サイトで公開機能を有効にすると、ナビゲーション設定が変更されます。

マスター ページ (チーム サイト v4.master に基づく) では、トップ メニュー コントロールは SiteMapDataSource オブジェクトを返す DataSource を使用するように構成されていました。ただし、公開機能を有効にしたため、次を使用する必要がありました。 GlobalNavigation, 、実際には PortalSiteMapProvider, を生成する必要があります。 PortalSiteMapProvider あなたとして反対します DataSource のために AspMenu コントロール (これを使用している場合)。

したがって、上記の asp:SiteMapDataSource コードを次のように置き換えました。

PublishingNavigation:PortalSiteMapDataSource
    StartFromCurrentNode="true"
    ShowStartingNode="false"
    SiteMapProvider="GlobalNavigation"
    id="topSiteMap"
    runat="server"

意図したとおりにナビゲーションを使用できるようになりました。

他のヒント

これはおそらく既知の問題であり、すべてのサイト コレクションが公開機能を使用してチーム サイトであったときに、ファーム全体に共通の一貫したナビゲーションを作成しているときに、以前にまったく同じ状況に直面したことがあったため、私の直感的な推測です。当時、それを機能させていたのはファーム レベルのオーバーライドでした。これはあまり良いアプローチではありませんでしたが、私たちはそれを採用しました。

にある topnavbar ユーザー コントロールに正確な変更を加えました。

"C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14 EMPLATE\CONTROLTEMPLATES opNavBar.ascx"

それをマスターページのトップナビゲーションバーのソースコードと照合します。

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top