javascript - 在 SharePoint 中通过 Javascript 应用主题

标签 javascript sharepoint sharepoint-online sharepoint-api

我正在尝试通过 JSOM 和 REST 在另一个网站集中应用主题。 我收到 404,表示找不到该文件。我选择其他 spcolor 或 spfont 文件并不重要。结果还是一样。

我做错了什么?

var applyTheme = {
url: urlToSiteCollection + "/_api/web/applytheme(
colorpaletteurl='/_catalogs/theme/15/palette007.spcolor',
fontschemeurl='_catalogs/theme/15/fontscheme007.spfont',
backgroundimageurl='/piclibrary/th.jpg', 
    sharegenerated=true)",
                                type: "POST",
                                headers: {
                                    "Accept": "application/json;odata=verbose",
                                    "X-RequestDigest": digest

                            },
                            contentType: "application/json;odata=vebose",
                            success: function (applyThemeData) {
                                alert("Applyat theme");
                            },
                            error: function (ex) {
                                alert(JSON.stringify(ex));
                            }
                        };
$.ajax(applyTheme);

以及 JSOM 代码:

var clientContext = new SP.ClientContext(urlToSiteCollection);
        var web = clientContext.get_web();
        var colorPaletteUrl = urlToSiteCollection + "/_catalogs/theme/15/palette011.spcolor"; 
        var fontSchemeUrl = urlToSiteCollection + "/_catalogs/theme/15/fontscheme002.spfont";
        var backgroundImageUrl = imageUrl;
        var shareGenerated = true;

        web.applyTheme(colorPaletteUrl, fontSchemeUrl, backgroundImageUrl, shareGenerated);
        web.update();

        clientContext.executeQueryAsync(onApplyThemeSuccess, OnFailure);

最佳答案

您很可能会在端点之后收到此错误:

http://<sitecollection>/<site>/_api/web/applyTheme(colorPaletteUrl,fontSchemeUrl,backgroundImageUrl,shareGenerated)

预期值为 colorPaletteUrl , fontSchemeUrl , backgroundImageUrl参数指定为服务器相对url,例如:/<site server relative url>/_catalogs/theme/15/palette007.spcolor

以下示例适合我

var siteUrl = _spPageContextInfo.siteServerRelativeUrl;
var options = {
   colorpaletteurl: _spPageContextInfo.siteServerRelativeUrl + '/_catalogs/theme/15/palette007.spcolor'
};


applyTheme(siteUrl,options)
   .done(function (result) {
          console.log("Theme has been applied");
   })
   .fail(function (ex) {
         console.log(JSON.stringify(ex));
   });    

哪里

function applyTheme(siteUrl,parameters){
    var requestUrl = siteUrl + "/_api/web/applytheme(";
    var paramUrls = [];
    for(var p in parameters) {
        paramUrls.push(p + "='" + options.colorpaletteurl + "'");
    }       
    requestUrl += paramUrls.join(',') +  ")";     
    return $.ajax({url: requestUrl,
                   type: "POST",
                   headers: {
                     "Accept": "application/json;odata=verbose",
                     "X-RequestDigest": $('#__REQUESTDIGEST').val()
                   },
                   contentType: "application/json;odata=vebose",
   });
}  

关于javascript - 在 SharePoint 中通过 Javascript 应用主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33570910/

相关文章:

javascript - 如果我在 JavaScript 中创建一个新对象,不是会为该函数的所有属性分配新内存吗?

javascript - `value >= value` 在 JavaScript 中做了什么?

rest - sharepoint 2010通过api调用获取选择字段的值

sharepoint - 监视 SharePoint 文档库

java - Sharepoint Online REST API 连接

javascript - 控制 Jquery scrolltop 速度

javascript - 如何在 JavaScript 中向自定义构造函数添加自定义方法?

javascript - 如何从 SP.UI.ModalDialog 获取参数?

jquery - TypeScript 无法加载/使用 table2excel

javascript - 如何修复在多人或组字段中添加用户时 SharePoint 中的错误(仅限人员)