SharePoint 2013 で作業しており、コンテンツ検索 Web パーツ用のカスタム表示テンプレートを作成しました。私のフィールドの 3 つは複数選択の人物ピッカーを使用しており、以下に示すように 3 つすべてが 1 つの文字列で名前を返しています。
ブラウン、ジョン・スミス、マイク・ジョーンズ、メアリー
以下に示す形式で名前を返したいのですが、それを機能させることができないようです:
ブラウン、ジョン。スミス、マイク。ジョーンズ、メアリー
これらのブログ記事からのアドバイスを試しました。
https://sharedpointtips.blogspot.com/2015/01/sharepoint-2013-display-template.html
最初の記事に含まれているすべての提案を試しました - https://social.msdn.microsoft.com/Forums/en-US/ea0fe2fe-0757-4c1c-b3cc-2dd99b38bfa1/sharepoint-2013-custom-display-template -people-picker-field-separate-multiple-names-in-display?forum=sharepointdevelopment
ヘッダーで:
'Response Preparer'{Response Preparer}:'ResponsePreparerOWSUSER'
体内で:
<script>
$includeLanguageScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Language Files/{Locale}/CustomStrings.js");
$includeScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Search/jquery-1.11.3.min.js");
$includeScript(this.url, "~sitecollection/_catalogs/masterpage/Display Templates/Search/splitNames.js");
RegisterSod('jquery-1.11.3.min.js', Srch.U.replaceUrlTokens("~sitecollection/_catalogs/masterpage/Display Templates/Search/jquery-1.11.3.min.js"));
RegisterSod('splitNames.js', Srch.U.replaceUrlTokens("~sitecollection/_catalogs/masterpage/Display Templates/Search/splitNames.js"));
//Register Dependencies
RegisterSodDep('splitNames.js', 'jquery-1.11.3.min.js');
AddPostRenderCallback(ctx, function () {
EnsureScriptFunc("splitNames.js", 'splitNames', function() {
var regulatorypartner = $getItemValue(ctx, "Regulatory Partner");
var splitregpartner = "";
splitregpartner = $splitNames(regulatorypartner);
});
});
</script>
JavaScript セクションで、私はこれを試しました:
var regulatorypartner = ctx.RegulatoryPartnerOWSUSER;
var splitregpartner = splitNames(regulatorypartner);
これは私の表示コードです:
<td rowspan="2" colspan="4" style="text-align:center; border:0.5px solid #F88007;"> _#= splitregpartner =#_ </td>
表示は次のようになります。
ブラウン、ジョン。スミス、マイク。ジョーンズ、メアリー
規制パートナーの出力は次のとおりです。
ブラウン、ジョン・スミス、マイク・ジョーンズ、メアリー
splitNames コードは次のとおりです (ファイルは RegisterSod ステートメントに含まれています)。
var newStr="";
for(var i=0;i<str.length;i++){
var char=str.charAt(i);
if(char==char.toUpperCase()){
newStr+=" "+char ;
}else{
newStr+=char;
}
}
return newStr;
}