Your Roll

Рейтинг ролевых ресурсов. Каталог ролок. Полезные инструменты для администраторов ролевых игр.


Вы не подключены. Войдите или зарегистрируйтесь

Предыдущая тема Следующая тема Перейти вниз  Сообщение [Страница 1 из 1]

Космо

avatar
Я сквозь ткань миров проходящий странник, Я СКВОЗНЯЯЯЯЯК!!! ХДД
Сейчас мы добавим на главную вашего форума аватарки пользователей в колонку последних сообщений. Код серьёзно отличается от тех, что есть на форумах поддержки - он более скоростной и не жрёт так много пользовательского трафика. А выглядят эти авки вот так:



Для начала нам надо будет зайти в админпанель - оформление - цвета - вкладка "каскадная таблица стилей CSS" и вставить вот такой кусочек кода:
Код:
.avka {
    background: #FFFFFF;
    float: left;
    margin-right: 0.5em;
    padding: 2px;
    vertical-align: middle;
    width: 48px;
}
background - это фон, он же обводка аватарки; padding - толщина обводки, а width - размер самой авки по ширине. Можно редактировать по вкусу :)

Далее идём в админпанель - модули - управление скриптами яваскрипт (в самом низу) и создаём скрипт с вот таким содержанием:
Код:
var users_on_pages = 30,
    max_pages = 3;
default_avatar = 'http://i55.servimg.com/u/f55/16/50/61/52/16087710.gif';

copyrightnotice = 'Скрипт от your.roll.tv . Распространение и использование разрешено только с прикреплением этой строки.';
function getCookie(e){var t=document.cookie.match(new RegExp("(?:^|; )"+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,"\\$1")+"=([^;]*)"));return t?decodeURIComponent(t[1]):undefined}function setCookie(e,t,n){n=n||{};var r=n.expires;if(typeof r=="number"&&r){var i=new Date;i.setTime(i.getTime()+r*1e3);r=n.expires=i}if(r&&r.toUTCString){n.expires=r.toUTCString()}t=encodeURIComponent(t);var s=e+"="+t;for(var o in n){s+="; "+o;var u=n[o];if(u!==true){s+="="+u}}document.cookie=s}function deleteCookie(e){setCookie(e,"",{expires:-1})}
$(function() {
  if (window.localStorage) {
    if (localStorage.forum_avatars) forum_avatars = JSON.parse(localStorage.forum_avatars); else forum_avatars = {};
    if (!localStorage.forum_avatars || Date(localStorage.forum_avatars_time) < (new Date()).valueOf() - 72000000 * 0.5) {
      var users = $('#stats p:eq(1) strong').text(),
          pages = Math.min(Math.ceil(users / users_on_pages), max_pages);
      ararar = {};
      for (var i = 0; i < pages; i++) {
        $.get('/memberlist'  + (i > 0 ? ('?mode=lastvisit&order=DESC&start=' + (i*30) +'&username') : ''), function (a,b) {
          if (b == 'success') {
           $(a).find('.avatar-mini a').each(function () {
             ararar[/[0-9]+/.exec($(this).attr('href'))[0]] = $(this).find('img').attr('src');
           });
            localStorage.forum_avatars = JSON.stringify(ararar);
            localStorage.forum_avatars_time = (new Date()).toJSON();
            forum_avatars = ararar;
            update_avatars();
          }
        });
      }
    }
  } else {
    forum_avatars = eval('('+getCookie('forum_avatars')+')');
    if (!forum_avatars) {
      var users = $('#stats p:eq(1) strong').text(),
          pages = Math.min(Math.ceil(users / users_on_pages), max_pages);
      ararar = {};
      for (var i = 0; i < pages; i++) {
        $.get('/memberlist'  + (i > 0 ? ('?mode=lastvisit&order=DESC&start=' + (i*30) +'&username') : ''), function (a,b) {
          if (b == 'success') {
           $(a).find('.avatar-mini a').each(function () {
             ararar[/[0-9]+/.exec($(this).attr('href'))[0]] = $(this).find('img').attr('src');
           });
            var str = '{';
            for (var i in ararar) {
              str += i + ': "' + ararar[i] + '",';
            }
            str = str.slice(-1) + '}';
            setCookie('forum_avatars', str, {expires: 60*60*12, path: '/'});
            forum_avatars = ararar;
            update_avatars();
          }
        });
      }
    }
  }
  update_avatars();
});
function update_avatars() {
  if (location.href.indexOf('/f') > 0 || location.href.lastIndexOf('/') == location.href.length - 1) $('.statused .tcr').each(function () {
    if ($(this).find('strong a').length > 0) {
        var user = $(this).find('strong a').attr('href').split('/u')[1];
        $(this).find('.avka').remove();
        $(this).prepend('<img src="' + (forum_avatars[user] ? forum_avatars[user] : default_avatar) + '" class="avka" />');
    } else {
        $(this).find('.avka').remove();
        $(this).prepend('<img src="'+ default_avatar +'" class="avka" />');
    }
  });
}
Здесь в самом начале есть несколько настроек, на которые нужно обратить внимание:
var users_on_pages = 30, /* Это количество тем на странице - можно узнать в админке - основное - сообщения. */
max_pages = 3; /* Сколько максимум загружать страниц с авками. Если у вас очень активный форум и некоторые авки не отображаются, возможно, придётся увеличить этот параметр. */
default_avatar = 'http://i55.servimg.com/u/f55/16/50/61/52/16087710.gif'; /* авка по умолчанию - для гостей, удалённых и просто юзеров без авок. По умолчанию радужная поняшка. */
Называем скрипт как душе угодно, включаем на всех страницах.

:warnsign: Чтобы аватарки стабильно показывались у всех посетителей, нужно будет зайти в админпанель - пользователи и группы - особые права доступа и напротив графы "пользователи" поставить уровень доступа "Гости".

Всё :)
 :infosign: Кстати, этот скрипт публикует все авки в глобальную переменную forum_avatars. Если вы любите покодить, это может вам пригодиться.



Последний раз редактировалось: Космо (30.03.14 3:28), всего редактировалось 2 раз(а)


______________________________

Не ищи логики там, где она скрывается. Потому что её там нет. (с)

Посмотреть профиль
они и внутри разделов даже есть)  Очень вам благодарна!

 всешки, наверное у меня форум или руки кривые, старые проблемы вернулись. Я поменяла дефолтную аву на свою и все разом  стали дефолтными. Пошла на тестовике попробовала, тоже поменяла и попрежнему работало нормально, тогда я скопировала свою CSS и сразу удалила, тут глюк и появился. Т.е. на тестовике уже все голо, но авки упорно дефолтные и на входе и на выходе.  С этим видимо ничего не поделать

Посмотреть профиль

Космо

avatar
Я сквозь ткань миров проходящий странник, Я СКВОЗНЯЯЯЯЯК!!! ХДД
Омномном... Зайдите в консоль или средства разработчика какие-нибудь - это обычно кнопка F12 - и в консоль отправьте
Код:
!!window.localStorage
. Если консоль ответила на это false, то у вас всё работает через печеньки. Эта часть скрипта непроверенная.

В любом случае может быть такое, что часть авок не загрузилась. Это бывает при количестве юзеров > количества тем на странице.

Кстати, я забыл написать, что для работы авок у всех юзеров нужно в админпанели - пользователях и группах - особых правах доступа включить доступ к "пользователям" для гостей.


______________________________

Не ищи логики там, где она скрывается. Потому что её там нет. (с)

Посмотреть профиль
ответ-правда) и такое
SEC7115: Стили :visited и :link могут отличаться только по цвету. Некоторые стили не были применены к стилю :visited.
пользователей как раз очень мало пока. Я мало чо в этом понимаю, но мне кажется, некий код в CSS выбивает авы из всех авочных скриптов, причем стоило ему побывать в этой самой CSS, и потом даже вычистить её, как авы не запускаются, найти его не получается

Черт меня дернул сменить дефорлтную, так бы может и не съехало. В любом случае, спасибо, я использую эту штучку как иконку  возле последнего ответа))

Посмотреть профиль

Космо

avatar
Я сквозь ткань миров проходящий странник, Я СКВОЗНЯЯЯЯЯК!!! ХДД
Код цсс не имеет никакой возможности влиять на скрипты)
Я на выходных регнусь у вас, пороюсь.


______________________________

Не ищи логики там, где она скрывается. Потому что её там нет. (с)

Посмотреть профиль
а доступ к шаблонам не нужен?

Посмотреть профиль

Космо

avatar
Я сквозь ткань миров проходящий странник, Я СКВОЗНЯЯЯЯЯК!!! ХДД
Ну в общем-то вопрос исчерпал себя на чужом поле деятельности)


______________________________

Не ищи логики там, где она скрывается. Потому что её там нет. (с)

Посмотреть профиль
боюсь сглазить, но заработало!!!  :party: 

Посмотреть профиль

Спонсируемый контент


Предыдущая тема Следующая тема Вернуться к началу  Сообщение [Страница 1 из 1]

Права доступа к этому форуму:
Вы не можете отвечать на сообщения