我已经建立了与多个masterpages /页面布局的解决方案为特征的一组SharePoint 2010的发布网站集合。
一以贯之的要求是能够抓住页面店主联系电子邮件,并在母版的页脚显示。 如果没有输入的页面联系人电子邮件,然后我需要抓住从人员选取器的网页拥有者数据,并从抢联系人的电子邮件。
我不希望有每一个发布页面布局添加到我的解决方案,并手动添加联系人电子邮件列到占位符,这似乎疯了我。 我想,必须有从母版中抓取的网页拥有者数据的方式,但我不能弄明白。 我开始寻找在jQuery的SPServices库,但到目前为止,我一直没能弄明白那边。
有没有人在使用母版所提供的网页所有者的联系人信息添加联系人的电子邮件的经验吗?
OK,为了解决这个问题,你需要的jQuery 1.7.x +和jQuery库SPServices您的网站上安装的版本0.7.2或更高。
使用GetListItems从SPServices操作。
我在寻找的网页目录内的页面,所以LISTNAME是“页面”。
该CAML视图域基本上都是针对PublishingContactEmail和PublishingContact列。 我发现那些使用U2U的CAML生成器版本4.0.0.0
所述ows_变量可以在萤火的POST对象的XML视图中找到。
该ows_PublishingContact返回的联系人信息的长字符串讨厌。 幸运的电子邮件地址被包围,#
这令拆分为一个数组,然后搜索电子邮件@容易,但是这就是为什么在那里。
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;
}