「プロバイダー ホスト型アプリ」で SharePoint の左側のナビゲーション バーを使用することは可能ですか。SharePoint サイト「PlaceHolderLeftNavBar」に表示されるナビゲーション。ajax 呼び出しや REST/CSOM 機能のような方法はありますか?
2 に答える
MSDN の公式ドキュメントによると、CSOM と JSOM の両方に、クイック起動メニュー (別名「左ナビゲーション バー」) へのアクセスも提供するナビゲーション プロパティが含まれています。
ドキュメントへのリンクは次のとおりです。
SP.Navigation.quickLaunch プロパティ (sp.js) (JSOM)
Navigation.QuickLaunch プロパティ(CSOM)
プロバイダーがホストするアプリで CSOM または JSOM を使用するには、OAUTH (Office 365/SharePoint Online の場合) を使用して認証するか、高信頼/オンプレミス環境で証明書を使用して認証する必要があります。
Visual Studio 2013 が提供する SharePoint 2013 用アプリ テンプレートを使用し、プロバイダー ホスト型を選択する場合、両方のシナリオで多くの手間のかかる作業を行う TokenHelper.cs/vb クラス ファイルが付属している必要があります。認証技術の詳細については、MSDN でも入手できます。特に、次のトピックを探してください。
- SharePoint 2013 でのアプリの承認と認証方法:
- SharePoint 2013 用の信頼性の高いアプリを作成する (高度なトピック)
現時点で利用可能な純粋な REST エンドポイントがあるかどうかはわかりません。これにより、プロバイダーがホストするアプリで CSOM / JSOM の高度な承認要件が確実に簡素化される可能性があります。
SP.Web.navigation プロパティは、サイド リンク バーやトップ ナビゲーション バーなど、サイトのナビゲーション構造を指定する値を取得します。
CSOM (JavaScript) 経由でナビゲーション (クイック起動) にアクセスする方法
function getQuickLaunch(success,error)
{
var context = new SP.ClientContext.get_current();
var web = context.get_web();
var nav = web.get_navigation();
var quickLaunch = nav.get_quickLaunch();
context.load(quickLaunch);
context.executeQueryAsync(
function() {
var nodes = [];
var nodesCount = quickLaunch.get_count();
for(var i = 0; i < nodesCount;i++){
var node = quickLaunch.getItemAtIndex(i);
nodes.push(node);
}
success(nodes);
},
error
);
}
使用法
getQuickLaunch(
function(nodes){
for(var idx in nodes)
{
console.log(nodes[idx].get_title());
}
},
function(sender, args) {
console.log('Error:' + args.get_message());
}
);
REST 経由でナビゲーション (クイック起動) にアクセスする方法
function getQuickLaunch(siteurl, success, failure) {
$.ajax({
url: siteurl + "/_api/web/navigation/quickLaunch",
method: "GET",
headers: { "Accept": "application/json; odata=verbose" },
success: function (data) {
success(data.d.results);
},
error: function (data) {
failure(data);
}
});
}
使用法
getQuickLaunch(_spPageContextInfo.webAbsoluteUrl,
function(nodes){
for(var idx in nodes)
{
console.log(nodes[idx].Title);
}
},
function(error) {
console.log(JSON.stringify(error));
}
);