2

有没有办法判断当前用户是否是博客的管理员?就像是

{Block:Owner}
    This is your blog. Click here to update the theme settings.
{/Block:Owner}

即使是通过 javascript/API 的东西也会有所帮助。我在主题文档中找不到任何内容

4

1 回答 1

3

我找到了一种方法,但它并不完全可靠,它取决于语言,可能还取决于操作系统。

Tumblr 控件栏的大小在 3 种可能的情况下会有所不同:

未登录261x 36未登录(这取决于博客的名称)

行政190x26 已登录,管理员

不是管理员179x26 已登录,但没有管理员

因此,我们可以确定用户是否使用以下代码登录:

//true: the current user is an admin
//false: the current user is not an admin
//'ask-later': the bar is not ready yet
//'dont-know': the bar is not there 
function isAdmin (tolerance) {
    // source: http://stackoverflow.com/a/27506229/288906

    //these values are expected for English blogs
    var EXPECTED_WIDTH = 190;
    var EXPECTED_HEIGHT = 26;

    tolerance = tolerance || 10;
    var controls = document.getElementById('tumblr_controls');
    if(!controls) {
        //the bar is not there
        return 'dont-know';
    }
    if(controls.width === '1') {
        //the bar is not ready, try later
        return 'ask-later';
    }
    var differenceW = Math.abs(controls.width - EXPECTED_WIDTH)
    var differenceH = Math.abs(controls.height - EXPECTED_HEIGHT);
    return differenceW + differenceH < tolerance;
}

tolerance我们可以指定一个仍然可以被认为是可接受的值范围,因此 195x28 仍然可以工作。此代码不适用于受密码保护的博客,因为它们不显示该栏。

这可以通过使其与 Promise 异步来进一步改进,因此您可以避免“尚未准备好”状态。

于 2014-12-16T13:55:09.017 回答