首页 > 解决方案 > 如何将页面详细信息值添加到 SharePoint 页脚

问题描述

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

我在网上查找了许多博客,但似乎没有什么能完全满足我的需求。他们提到了 Web 部件和片段,但这些似乎不是我需要的。

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

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

标签: htmlfieldsharepoint-2013

解决方案


如果您考虑使用 Javascript,那么您可以添加 jQuery(到母版页或布局,或直接到页面...取决于您想要的输出)并添加您的自定义 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 页面库在 SharePoint 中可能具有不同的名称。

请注意,为了让这个对 SharePoint API 的 REST 调用正常工作,用户至少需要对该列表/lib 的“读取”权限,该列表/lib 位于其余调用中,但假设您的用户肯定能够进入该页面他们将拥有对 lib 的“读取”权限。

请注意,页面库中的 OOB“联系人”列有许多字段(邮件、姓名等),这些字段已经存在于 REST API 响应中,您不需要在通话中使用“扩展”。所以也许你只能使用这个调用:

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

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


推荐阅读