標籤:ffffff 自動 users api 儲存 attr query text 支援
隨著智能化辦公的啟動,很多企業都邁向了數字化轉型的行列,由于越來越多大企業客戶希望有統一的Portal來做企業交流和協作的統一視窗,那麼就為SharePoint管理員帶來了普遍困擾:使用者登入Portal時,如何根據使用者的身份來自動更換Portal的Logo以及Web Part,近期在MSDN 論壇上也有人諮詢該問題,這裡整理並匯總下實現方式。
作為資深的SharePoint管理員,我們知道Web Part可以通過配置Audience來控制哪些Group member可以顯示Web Part哪些Group Member是隱藏Web Part的,但如何根據使用者身份來控制Logo顯示呢?
解決方案:通過SharePoint Designer在Master Page中<head/>前做下修改。
前期準備:
? 建立Picture Library用來做Logo的儲存
? 根據實際需求建立SharePoint Group
? 將AD User添加到特定的SharePoint Group中,需要注意不支援Ad Group
以Pingpang Group為例,操作如下:
1.建立Picture Library,並上傳Logos,如所示:
2.建立SharePoint Group,並命名為Pingpang Group,添加User:jzliu,如所示:
3.使用SharePoint Designer來開啟Site Collection,並點擊Site Objects中的Master Pages,如所示:
4.在Master Page Library中,用進階模式開啟seattle.master, 並在<head/>添加如下代碼:
<script src="https://code.jquery.com/jquery-1.12.4.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function(){
var groupName="Pingpang Group";
var logoImgUrl="http://www.demo.com/sites/Changchun/Picture/Pingppang.jpg";
if(isMember(groupName)){
$(".ms-siteicon-img").attr("src",logoImgUrl);
}
})
function isMember(groupName){
var isGroupMember=false;
$.ajax({
url: _spPageContextInfo.webAbsoluteUrl + "/_api/web/sitegroups/getByName(‘"+groupName+"‘)/Users?$filter=Id eq " + _spPageContextInfo.userId,
method: "GET",
async:false,
headers: { "Accept": "application/json; odata=verbose" },
success: function(data){
if(data.d.results.length>0){
isGroupMember=true;
}
}
});
return isGroupMember;
}
</script>
5.修改“GroupName”和“Logoimgurl”,說明:Groupname必須是SharePoint Group,不支援AD Group;Group member必須是AD Users
6.當jzliu登入後,可以看到log切換為Pingpang的logo,如所示:
如果Byron來自Basketball group,你需要再次按照步驟4和5作業碼,這樣才能保證Byron登入時,顯示是Basketball的Logo,如所示:
希望經驗分享對大家日後工作有所協助~~ 感謝閱讀
SharePoint:如何根據使用者身份來自動控制Portal的Logo顯示