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