用語駆動のパンくずリストを作成するにはどうすればよいですか?
-
10-12-2019 - |
質問
私は SharePoint 2013 を使用していて、SharePoint Designer で HTML マスター ページを編集して、SharePoint 2010 の場合と同様にパンくずリストを表示しました。コードはマスター ページの ID「DeltaPlaceHolderPageTitleInTitleArea」の後に配置され、次のようになります。
<!--SPM:<asp:sitemappath
runat="server"
sitemapprovider="SPContentMapProvider"
rendercurrentnodeaslink="true"
nodestyle-cssclass="breadcrumbNode"
currentnodestyle-cssclass="breadcrumbCurrentNode"
rootnodestyle-cssclass="breadcrumbRootNode"
SkipLinkText=""/>-->
これは確かにパンくずリストを示していますが、私が期待していたとおりには表示されません。「イントラネット」という名前のサイト コレクションがあり、そのサブサイトの「全般」という名前があるとします。サブサイト「全般」の「はじめに」というページにいます。このページ (およびこのサブサイトの他のすべてのページ) は用語セットによって管理されます。
次のような軌跡が表示されます。イントラネット > 一般 > はじめに
ここで、私の用語セットには、用語「 Introduction 」の子要素である他の 2 つの用語があり、これらの子要素 (子用語) には「 History 」と「 Locations 」という名前が付けられているとします。もし私が「歴史」ページにいるとしたら、それはサブサイト「一般」の直下の別のページにすぎません。
次のようなパンくずリストが表示されます。イントラネット > 一般 > 履歴
私はそれが次のように表示されることを望みます:イントラネット > 一般 > はじめに > 歴史
ブレッドクラムトレイルがどのページが子用語であり、どのページが親用語であるかを検出するために何をすべきか理解していないようなので、これについては少し困惑しています。
よろしくお願いいたします。
編集:基本的に私が検索するのは次の例のようなものです このブログ. 。ただ、Web パーツの使用は避けたいと思っています。JavaScript で変更するか、マスター ページで直接変更を加えたいと考えています。
解決
私は、Term主導のサブサイトナビゲーションの値を使用して階層的なブレッドクラムを得る方法を見つけました! :)
ナビゲーションのどのリスト項目を選択して(それがあなたがオンしているページへのURLを持っています)、リストをループしてすべての親要素を収集することができます。
それらの親要素に基づいて、私は階層を知っていて、それらの要素の値を使用してブレッドクラムを作成することができます。
これはそれを知っているようにブレッドクラムのスクリーンショットです:
そしてここに私が持っているブレッドクラムのスクリーンショットがJavaScriptの助けを借りて:
ご覧のとおり、ページへのフルパスが表示されます。
私は新しい post
あなたがコードに問題があるかどうか、あるいは助けが必要な場合はお気軽に尋ねてください。
他のヒント
Robertとして、私はSPTitleBreadcrumbをほぼ同様の方法で利用することを簡単に実装できます。レイアウトページの私のHTMLコードは次のとおりです。
<div id="modern-breadcrumb">
<!--MS:<SharePoint:SPTitleBreadcrumb
runat="server"
RenderCurrentNodeAsLink="false"
SiteMapProvider="CurrentNavigationTaxonomyProvider"
ParentLevelsDisplayed="2"
DefaultParentLevelsDisplayed="2"
RootNodeStyle-CssClass="home"
NodeStyle-CssClass="bc-node"
CurrentNodeStyle-CssClass="current"
PathSeparator=""
PathDirection="RootToCurrent">-->
<!--ME:</SharePoint:SPTitleBreadcrumb>-->
</div>
. Term プロパティには、現在のページの管理されたメタデータのナビゲーション分類が表示されますが、ハイパーリンクは提供されません。
<!--CS: Start Term Property Snippet--><!--SPM:<%@Register Tagprefix="spsswc" Namespace="Microsoft.Office.Server.Search.WebControls" Assembly="Microsoft.Office.Server.Search, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>--><!--SPM:<%@Register Tagprefix="ac679b743" Namespace="Microsoft.SharePoint.Taxonomy" Assembly="Microsoft.SharePoint.Taxonomy, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>--><!--MS:<ac679b743:TermProperty runat="server" TermStoreID="00000000-0000-0000-0000-000000000000" TermSetID="00000000-0000-0000-0000-000000000000" TermID="00000000-0000-0000-0000-000000000000" Property="Path" Title="<%$Resources:osrvcore,TermProperty_Title%>" FrameType="None" SuppressWebPartChrome="True" Description="<%$Resources:osrvcore,TermProperty_Description%>" IsIncluded="True" ZoneID="ImportedPartZone" PartOrder="0" FrameState="Normal" AllowRemove="True" AllowZoneChange="True" AllowMinimize="True" AllowConnect="True" AllowEdit="True" AllowHide="True" IsVisible="True" DetailLink="" HelpLink="" HelpMode="Modeless" Dir="Default" PartImageSmall="" MissingAssembly="<%$Resources:osrvcore,WebPartImportError%>" ImportErrorMessage="<%$Resources:osrvcore,WebPartImportError%>" PartImageLarge="" IsIncludedFilter="" ExportControlledProperties="True" ConnectionID="00000000-0000-0000-0000-000000000000" ID="g_9e235508_1981_4af3_afca_f5a52d0e66cf" ChromeType="None" ExportMode="All" Preview="<div class="ms-webpart-chrome ms-webpart-chrome-vertical ms-webpart-chrome-fullWidth "> <div WebPartID="00000000-0000-0000-0000-000000000000" HasPers="true" id="WebPartwpz2_g_9e235508_1981_4af3_afca_f5a52d0e66cf" width="100%" class="ms-WPBody noindex " OnlyForMePart="true" allowDelete="false" style="" ><div id="WebPartContent"> [ TermProperty "g_9e235508_1981_4af3_afca_f5a52d0e66cf" ] </div><div class="ms-clear"></div></div> </div>" __MarkupType="vsattributemarkup" __WebPartId="{9e235508-1981-4af3-afca-f5a52d0e66cf}" WebPart="true" Height="" Width="">--><!--PS: Start of READ-ONLY PREVIEW (do not modify)-->[ TermProperty "Unnamed4" ]<!--PE: End of READ-ONLY PREVIEW--><!--ME:</ac679b743:TermProperty>--><!--CE: End Term Property Snippet-->
または、次のように JavaScript を使用します (完全に機能するにはさらに多くの作業が必要です)
<SCRIPT LANGUAGE="JavaScript">
<!--
var path = "";
var href = document.location.href;
var s = href.split("/");
for (var i=2;i<(s.length-1);i++) {
path+="<A HREF=\""+href.substring(0,href.indexOf("/"+s[i])+s[i].length+1)+"/\">"+s[i]+"</A> / ";
}
i=s.length-1;
path+="<A HREF=\""+href.substring(0,href.indexOf(s[i])+s[i].length)+"\">"+s[i]+"</A>";
document.writeln(path);
//-->
</script>
マスターページで次のコントロールを使用して、管理ナビゲーションを使用してブレッドクラムを取得できました。
<SharePointWebControls:ListSiteMapPath runat="server"
SiteMapProviders="GlobalNavigationTaxonomyProvider"
RenderCurrentNodeAsLink="true" CssClass="s4-breadcrumb"
NodeStyle-CssClass="s4-breadcrumbNode"
CurrentNodeStyle-CssClass="s4-breadcrumbCurrentNode"
RootNodeStyle-CssClass="s4-breadcrumbRootNode"
HideInteriorRootNodes="true"
SkipLinkText=""
PathSeparator="">
</SharePointWebControls:ListSiteMapPath>
. もう1つのオプションは、以下のようにSPTitleBreadCrubsコントロールを利用することです。
<SharePoint:AjaxDelta id="DeltaPlaceHolderPageTitleInTitleArea" runat="server">
<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server">
<SharePoint:SPTitleBreadcrumb
runat="server"
RenderCurrentNodeAsLink="false"
SiteMapProvider="CurrentNavigationTaxonomyProvider"
ParentLevelsDisplayed="4"
DefaultParentLevelsDisplayed="4" PathDirection="RootToCurrent">
<PATHSEPARATORTEMPLATE>
<SharePoint:ClusteredDirectionalSeparatorArrow runat="server" />
</PATHSEPARATORTEMPLATE>
</SharePoint:SPTitleBreadcrumb>
</asp:ContentPlaceHolder>
</SharePoint:AjaxDelta>
.