5

「プロバイダー ホスト型アプリ」で SharePoint の左側のナビゲーション バーを使用することは可能ですか。SharePoint サイト「PlaceHolderLeftNavBar」に表示されるナビゲーション。ajax 呼び出しや REST/CSOM 機能のような方法はありますか?

4

2 に答える 2

1

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 の高度な承認要件が確実に簡素化される可能性があります。

于 2014-03-24T14:29:32.900 に答える
1

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));
   }
);
于 2014-04-12T08:06:50.693 に答える