Отображение контента только владельцу / администратору блога Tumblr

Есть ли способ определить, является ли текущий пользователь администратором блога? Что-то вроде

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

Даже что-то через javascript/API было бы полезно. Я не смог найти ничего в документации по теме

1 ответ

Я нашел способ, но он не совсем надежен и зависит от языка и, возможно, от ОС.

Размер панели управления Tumblr варьируется в 3 возможных ситуациях:

не вошли в 261x36 не авторизован (это зависит от названия блога)

админ 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://stackru.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 все еще может работать. Этот код не работает в блогах, защищенных паролем, поскольку они не отображают эту полосу.

Это можно еще улучшить, сделав его асинхронным с обещаниями, так что вы можете избежать этого состояния "еще не готово".

Другие вопросы по тегам