【问题标题】:Get Page owner contact email and display in SharePoint 2010 Masterpage获取页面所有者联系电子邮件并在 SharePoint 2010 Masterpage 中显示
【发布时间】:2012-11-30 03:29:07
【问题描述】:

我已经构建了一个解决方案,其中包含多个母版页/页面布局作为一组 SharePoint 2010 发布网站集的功能。

一个一致的要求是能够获取页面所有者联系电子邮件并将其显示在母版页的页脚中。如果没有输入页面联系电子邮件,那么我需要从人员选择器中获取页面所有者数据,并从中获取联系电子邮件。

我不想将每个发布页面布局都添加到我的解决方案中,并手动将联系人电子邮件列添加到占位符中,这对我来说似乎很疯狂。我认为必须有一种方法可以从母版页中获取页面所有者数据,但我无法弄清楚。我开始查看 jQuery SPServices 库,但到目前为止我也无法弄清楚。

有没有人有使用母版页中提供的页面所有者联系信息添加联系电子邮件的经验?

【问题讨论】:

    标签: visual-studio-2010 sharepoint-2010 master-pages spservices


    【解决方案1】:

    好的,为了解决这个问题,您需要在您的网站上安装 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_变量可以在firebug中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;    
    }
    

    【讨论】:

      猜你喜欢
      • 2012-01-12
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      • 2012-11-09
      • 2011-01-04
      相关资源
      最近更新 更多