1

我已經構建了一個包含多個主頁面/頁面佈局的解決方案,作爲一組SharePoint 2010發佈網站集的功能。獲取頁面所有者聯繫人電子郵件並在SharePoint 2010中顯示主頁面

一個一致的請求是能夠獲取頁面所有者聯繫人電子郵件並將其顯示在主頁的頁腳中。如果未輸入聯繫人電子郵件頁面,則需要從人員選取器中獲取頁面所有者數據,然後從中獲取聯繫人電子郵件。

我不想將每個發佈頁面佈局添加到我的解決方案中,並手動將聯繫人電子郵件列添加到佔位符,這對我來說似乎很瘋狂。我認爲必須有一種方法可以從主頁面中獲取頁面所有者數據,但我無法弄清楚。我開始研究jQuery SPServices庫,但到目前爲止,我還沒有能夠找到它。

有沒有人有任何使用主頁中提供的頁面所有者聯繫信息添加聯繫人電子郵件的經驗?

回答

0

好的,爲了解決這個問題,你需要在你的站點安裝jQuery 1.7.x +和SPServices jQuery library版本0.7.2或更高版本。使用GetListItems作爲來自SPServices的操作。

我正在尋找Pages目錄內的頁面,所以listName是「Pages」。

CAML視圖字段基本上是PublishingContactEmail和PublishingContact的列。我發現那些使用u2u's CAML builder version 4.0.0.0

ows_變量可以在螢火蟲的POST對象的xml視圖中找到。

ows_PublishingContact返回一個長長的討厭的聯繫人信息字符串。幸運的是,電子郵件地址被,#包圍,這使得它分成數組,然後搜索email @ easy,但這就是爲什麼在那裏。

function get_page_contact_email() {  
    var thisPageID = _spPageContextInfo.pageItemId;  
    var e;  
    $().SPServices({  
     operation: "GetListItems",  
     async: false,  
     listName: "Pages",  
     CAMLViewFields: "<ViewFields><FieldRef Name='PublishingContactEmail' /><FieldRef Name='PublishingContact' /></ViewFields>",  
     CAMLQueryOptions: "<QueryOptions><ExpandUserField>True</ExpandUserField></QueryOptions>",  
     completefunc: function (xData, Status) {  
      $(xData.responseXML).SPFilterNode("z:row").each(function() {  
       if (thisPageID == $(this).attr("ows_ID")) {  
        if ($(this).attr("ows_PublishingContactEmail")) { // if page email is set  
         e = $(this).attr("ows_PublishingContactEmail");  
        } else if ($(this).attr("ows_PublishingContact")) { //otherwise use contact info  
         var contact = $(this).attr("ows_PublishingContact").split(",#");  
         for (var c = 0; c < contact.length; c++) {  
          if (contact[c].indexOf("@") != -1) {  
           e = contact[c];  
          }  
         }  
        } else { //or nothing is set.  
         e = false;  
        }  
       }  
      });  
     }  
    });  
    return e;  
} 
相關問題