2

我正在创建一个我想要遵循的 SharePoint 应用程序。

  1. 在母版页库中,复制当前母版页并创建新的母版页。(就像我们手动执行新的 SharePoint Designer 一样。)
  2. 在新母版页中注入 JavaScript 引用并保存。
  3. 将新母版页应用为默认母版页。

所有这些都应该只使用 JavaScript 来完成。

有人知道该怎么做吗?

感谢用户988917

4

3 回答 3

1

要获取当前母版页,请向以下端点发出 GET 请求

/_api/Web?$select=CustomMasterUrl,MasterUrl

要更改当前母版页,

function MastePageChange() {
var clientcontext;
var cweb;
var customMasterURL = '/_catalogs/masterpage/NewMasterPage.master';
clientcontext = new SP.ClientContext.get_current();
cweb = clientcontext.get_web();
cweb.set_customMasterUrl(masterPageUrl);
cweb.set_masterUrl(masterPageUrl);
cweb.update();
clientcontext.executeQueryAsync(function() {
    alert("Master Page has been changed successfully \n" + customMasterURL);
}, function(sender, args) {
    alert("Error: " + args.get_message());
});
}
于 2016-03-28T07:05:44.870 回答
0

要修改 Masterpages,我建议查看这两个资源。

首先,一篇博文解释了如何应用母版页:

arichterwork.blogspot.com/2008/03/programmatically-inherit-master-page.html

例如web.MasterUrl = "/_layouts/custom.master"

接下来是关于核心对象的 SharePoint JavaScript API 参考,在本例中是 Web:

msdn.microsoft.com/EN-US/library/office/jj245288.aspx

您可以看到 masterUrl 和 customMasterUrl 都可以读/写。

最后,您需要进行一些基本的文件操作。以下是 MSDN 资源:

msdn.microsoft.com/en-us/library/jj163201.aspx#BasicOps_FileTasks

还有两个挑战。首先是关于权限:更新母版页库是一项高权限操作。另一个风险更大的挑战是您将 JS 注入到页面中,并且 JS 可能会被恶意使用。

如果您计划将此方法与 SharePoint 应用程序一起使用,我会考虑寻找一种替代方法。不允许这样的脚本注入。

于 2013-11-01T17:51:09.750 回答
0

我没有在 JS 中尝试过这个,但通常有等效的方法,所以查看服务器端代码会有所帮助。http://blog.vegaitsourcing.rs/2008/10/programmatically-uploading-master-pages.html这里也是如何使用 JS 上传文件的示例(我相信只适用于 HTML5 浏览器)http://msdn。 microsoft.com/en-us/library/jj163201.aspx

棘手的事情是文件操作(注入 JS)......我没有看到纯粹从 JS 做到这一点的好方法,你可能需要一些服务器端代码来破解打开文件并注入新代码,保存后再上传回来。

于 2013-10-25T17:57:43.453 回答