如何将页面详细信息值添加到SharePoint页脚

时间:2019-07-13 09:50:10

标签: html field sharepoint-2013

我是SharePoint的新手,正在更新公司的内部网。我想在每个页面上添加页脚(我已经手动完成了),但是我想在每个页面的页脚中填充“联系人”人的名字页面和“日期更新”页面。数据显示在每个页面的属性中-我只是不知道如何将数据值映射到页脚中。我没有SharePoint Designer,所以我希望可以将一些代码添加到html中,或者可以添加一些Javascript来生成这些值。

我已经在网络上查找了许多博客,但似乎没有任何内容可以完全满足我的需求。他们提到了Web部件和代码段,但这些似乎不是我所需要的。

所需的页脚示例: “如果对此页面有任何疑问,请联系[页面“联系人”名称]。此页面的最后更新时间为[“修改日期”]。”

我希望将唯一页面的详细信息自动填充到每个页面的页脚中(即,一旦我映射了必填字段)。

1 个答案:

答案 0 :(得分:0)

如果您考虑使用Javascript,则可以添加jQuery(添加到母版页或布局,或直接添加到页面...取决于所需的输出),并以与使用JS相同的方式添加自定义JS文件。 _spPageContextInfo对象以获取默认页面上下文信息。

从此对象中,您可以获取页面ID,然后可以从其中对SharePoint API进行REST调用以获取所有列(要获取用户列数据(例如标题或邮件),您需要在rest调用中“扩展”此列)。

对于您的情况,我将执行以下脚本:

var getPageProps = function() {
    try {
        $.ajax({
            url:
                _spPageContextInfo.siteAbsoluteUrl +
                "/_api/web/lists/getbytitle('Pages')/items(" +
                _spPageContextInfo.pageItemId +
                ')?$select=*,PublishingContact/Title&$expand=PublishingContact',
            method: 'GET',
            headers: { Accept: 'application/json; odata=verbose' },
            success: function(data) {
                console.log(
                    'If you have any questions about this page, please contact ' +
                        data.d.PublishingContact.Title +
                        '. This page was last updated on ' +
                        data.d.Modified
                );
                // other logic goes here 
            },
            error: function(data) {
                console.error('getPageProps ajax call error-> ' + data);
            }
        });
    } catch (ex) {
        console.error('getPageProps error -> ' + ex.message);
    }
};

$(document).ready(function() {
    getPageProps();
});

,然后我将为此网站修改使用的MasterPage,使其包含jQuery和我的自定义JS文件。我将jQuery Lib和我的JS文件存储在同一SiteCollection上的样式库中。要包含JS文件,您需要添加以下几行:

<SharePoint:ScriptLink language="javascript" name="~SiteCollection/Style Library/JavaScriptFiles/jquery.js" Defer="true" runat="server" />
<SharePoint:ScriptLink language="javascript" name="~SiteCollection/Style Library/JavaScriptFiles/getPageProps.js" Defer="true" runat="server" />

我希望这会有所帮助:)

请注意,根据您使用的语言,OOB Pages库在SharePoint中的名称可能不同。

请注意,为了使此对SharePoint API的REST调用起作用,用户至少需要对该列表/ lib的“读取”权限(在其余调用中),但前提是您的用户将能够进入该页面那么可以肯定他们将拥有对lib的“读取”权限。

请注意,页面lib中的OOB“联系人”列具有许多字段(邮件,姓名等),这些字段已经存在于REST API响应中,因此您无需在调用中使用“扩展”。所以也许您只能使用此呼叫:

_spPageContextInfo.siteAbsoluteUrl + "/_api/web/lists/getbytitle('Pages')/items(" + _spPageContextInfo.pageItemId + ')

我仅将此“扩展”添加到我的帖子中,以便向您展示如何从添加到列表的自定义用户列中获取用户对象详细信息。