公開が有効になっている 2010 チーム サイト:ナビゲーションの問題
-
09-12-2019 - |
質問
SharePoint 2010 Standard を使用しており、発行機能が有効になっているチーム サイトがあるシナリオがあります。カスタム マスターページ (v4.master を少し変更したバージョン - 追加のカスタム コントロールを含む) とカスタム CSS があります。
問題は、サイト コレクションのトップ レベル以外のサイトでは、トップ ナビゲーション コントロールがコンテンツ ページのナビゲーション設定を無視しているように見えることです。
カスタム マスター ページは、システム マスター ページおよびサイト マスター ページ (チーム サイトに必要) として設定され、すべてのナビゲーションの変更は _layouts フォルダー内のどのページにも完全に表示されます。ただし、ユーザーが作成したページ (デフォルトでは「Wiki ページ」のタイプに設定されています。私の知る限り、~14/TEMPLATE/DocumentTemplates/wkpstd.aspx テンプレートを使用します) では、正しいナビゲーションが表示されません。
表示されるナビゲーションは次のとおりです。
- トップレベルのサイトコレクション (正しい):HomeLink [手動で作成したリンク]、Link1、Link2、Link3、Link4
- サブサイト:HomeLink (設定が「親から継承」に設定されているため、不正解)
すべてのナビゲーション設定は正しく、他の環境で再確認およびテストされています。
これが機能しない理由がわかる人はいますか?使用されている可能性があるすべてのテンプレートで、PlaceHolder の競合または上書きがないか確認しましたが、使用している標準の PlaceHolder (PlaceHolderTopNavBar および PlaceHolderhorizontalNav) を参照しているものは見つかりませんでした。
メニューのレンダリングに使用されるコントロールはデフォルトです。
<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"
それをマスターページのトップナビゲーションバーのソースコードと照合します。