1. 程式人生 > >SharePoint:如何根據用戶身份來自動控制Portal的Logo顯示

SharePoint:如何根據用戶身份來自動控制Portal的Logo顯示

func alt 企業 ava 統一 分享 希望 分享圖片 nag

隨著智能化辦公的啟動,很多企業都邁向了數字化轉型的行列,由於越來越多大企業客戶希望有統一的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顯示