仅向Tumblr博客所有者/管理员显示内容

时间:2014-12-15 16:05:49

标签: tumblr tumblr-themes

有没有办法确定当前用户是否是博客的管理员?像

这样的东西
{Block:Owner}
    This is your blog. Click here to update the theme settings.
{/Block:Owner}

即使是通过javascript / API的内容也会有所帮助。我无法在theme documentation

中找到任何内容

1 个答案:

答案 0 :(得分:3)

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

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

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

admin 190x26已登录,管理员

not admin 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仍然有效。此代码不受密码保护的博客的影响,因为他们不会显示该条。

这可以通过使其与promises异步来进一步改进,因此您可以避免这种情况&#34;尚未准备好&#34;状态。