Romych
отредактировала пред.сообщение.
классы нормально работают, это у меня в старой версии что-то баговало.
1. не работает количество отгружаемых постов
2. + надо добавить ссылку на авик по умолчанию
Единый форум поддержки |
Привет, Гость! Войдите или зарегистрируйтесь.
Вы здесь » Единый форум поддержки » Новые возможности форумов » Стена в профиле
Romych
отредактировала пред.сообщение.
классы нормально работают, это у меня в старой версии что-то баговало.
1. не работает количество отгружаемых постов
2. + надо добавить ссылку на авик по умолчанию
Герда
обрати внимание на переменную LoginU, она берётся из селектора, содержащего имя автора профиля, которая всем пользователям и гостям выглядит одинаково, т.е. именно имя автора профиля. Далее в скрипте идёт сравнение списка имён из всех, чьи посты попали на Стену, с именем автора, если не совпадают, то класс anypost. Так что в последней версии всё правильно. В предыдущих да, был косяк о котором ты говоришь
Через час доберусь до компа и сделаю аватар по умолчанию. Про количество постов не понял, сколько сейчас у тебя отображается?
2. + надо добавить ссылку на авик по умолчанию
Вот вариант для тебя (и тех, у кого ссылка в подписи) с опцией авы по умолчанию
<script language="javascript"> var ot = 0; //отображение сообщений на стене 0 по убыванию, 1 по возрастанию var mc = 5; //число отображаемых сообщений из темы var anyava = 'http://forumstatic.ru/files/0000/14/1c/20038.jpg';//аватар по умолчанию для тех, у кого он не установлен if($('#profile-signature').length){ var LoginU = $('#profile-name').text(), ss = $('#profile-signature>ul>p>a[href*="viewtopic.php"]').eq(-1), si=parseInt($(ss).attr('href').split(/=/)[1]), as = [], blk = '<article class="stena"><h1>Стена</h1>'; $.get('/export.php?type=atom&tid='+si+'&max='+mc, function(d) { var d2 = $(d).find('entry'); $(d2).each(function (i){ as[i] = {a: $(this).find('name').text(), b: $(this).find('content').text()}; }); function fs(arr){for (var i in arr){(arr[i].a==LoginU)? blk +='<div id ="s-'+i+'" class="mypost">' : blk +='<div id ="s-'+i+'" class="anypost">'; blk +='<img alt="'+arr[i].a+'" src="" width="32"><strong>'+arr[i].a+' написал(а):</strong><div>'+arr[i].b+'</div></div>'; }}; var unq = [...new Set(as.map(item => 'username[]='+item.a))].join('&'); $.getJSON('/api.php?method=users.get&'+unq+'&fields=avatar,username',function(j) { var x = j.response.users; for (var k in x){if (x[k].avatar=='') {x[k].avatar=anyava}; $('div[id*="s-"]>img[alt="'+x[k].username+'"]').attr('src',x[k].avatar);} }); (ot==1)? fs(as): fs(as.reverse()); blk +='<a href="/viewtopic.php?id='+si+'&action=last">Перейти в тему</a></article>'; $('#profile-signature').after(blk); });} </script>
Вот вариант для Mirra Bell (и тех, у кого ссылка в доп.поле) тоже с опцией авы по умолчанию
<script language="javascript"> var ot = 0; //отображение сообщений на стене 0 по убыванию, 1 по возрастанию var mc = 5;//число отображаемых сообщений из темы var anyava = 'http://forumstatic.ru/files/0000/14/1c/20038.jpg';//аватар по умолчанию для тех, у кого он не установлен if($('#viewprofile ').length){ var LoginU = $('#profile-name').text(), ss = $('#viewprofile #pa-fld1 strong a[href*="viewtopic.php"]').eq(-1), si=parseInt($(ss).attr('href').split(/=/)[1]), as = [], blk = '<article class="stena"><h1>Стена</h1>'; $.get('/export.php?type=atom&tid='+si+'&max='+mc, function(d) { var d2 = $(d).find('entry'); $(d2).each(function (i){ as[i] = {a: $(this).find('name').text(), b: $(this).find('content').text()}; }); function fs(arr){for (var i in arr){(arr[i].a==LoginU)? blk +='<div id ="s-'+i+'" class="mypost">' : blk +='<div id ="s-'+i+'" class="anypost">'; blk +='<img alt="'+arr[i].a+'" src="" width="32"><strong>'+arr[i].a+' написал(а):</strong><div>'+arr[i].b+'</div></div>'; }}; var unq = [...new Set(as.map(item => 'username[]='+item.a))].join('&'); $.getJSON('/api.php?method=users.get&'+unq+'&fields=avatar,username',function(j) { var x = j.response.users; for (var k in x){if (x[k].avatar=='') {x[k].avatar=anyava}; $('div[id*="s-"]>img[alt="'+x[k].username+'"]').attr('src',x[k].avatar);} }); (ot==1)? fs(as): fs(as.reverse()); blk +='<a href="/viewtopic.php?id='+si+'&action=last">Перейти в тему</a></article>'; $('#profile-signature').after(blk); });} </script>
1. не работает количество отгружаемых постов
у меня ни на одном форуме такого глюка не наблюдается,
попробуй вот эту строку вот так
$.get('/export.php?type=atom&tid='+si+'&max='+mc+', function(d) {
Про количество постов не понял, сколько сейчас у тебя отображается?
должно быть 5:
var mc = 5; //число отображаемых сообщений из темы
отображается все, что есть в топике:
http://oaotr.0pk.ru/profile.php?id=16
сам топик: http://oaotr.0pk.ru/viewtopic.php?id=167&p=2#p631
*можно с гостя добить еще постов, если надо
* ссылка на профайл: http://oaotr.0pk.ru/profile.php?id=16
$.get('/export.php?type=atom&tid='+si+'&max='+mc+', function(d) {
это первое, что я попробовала.
так вообще ничего не отображается.
======================
Romych
я поняла, в чем косяк.
http://ford.mybb.ru/profile.php?id=2
если ссылка будет вида:
[url=http://ford.mybb.ru/viewtopic.php?id=7#p10]Это ссылка на топик с моими ПОДАРКАМИ[/url]
http://ford.mybb.ru/viewtopic.php?id=7#p10
код не срабатывает на количество постов.
хз, поправлять ли...
в теории, если юзер-френдли делать, то стоит.
т.к. версия с ссылкой в подписи подразумевает, что пользователи форума сами вставляют ссылки, а юзеры - это юзеры. они могут и ссылку типа /viewtopic.php?id=39316&p=4#p960514 вкорячить.
http://ford.mybb.ru/viewtopic.php?id=7#p10
код не срабатывает на количество постов.
а так попробуй
<script language="javascript"> var ot = 0; //отображение сообщений на стене 0 по убыванию, 1 по возрастанию var mc = 5; //число отображаемых сообщений из темы var anyava = 'http://forumstatic.ru/files/0000/14/1c/20038.jpg';//аватар по умолчанию для тех, у кого он не установлен if($('#profile-signature').length){ var LoginU = $('#profile-name').text(), ss = $('#profile-signature>ul>p>a[href*="viewtopic.php"]').eq(-1), si=parseInt($(ss).attr('href').split(/=/)[1]), as = [], blk = '<article class="stena"><h1>Стена</h1>'; $.get('/export.php?type=atom&tid='+si+'&max='+mc, function(d) { var d2 = $(d).find('entry'); $(d2).each(function (i){ as[i] = {a: $(this).find('name').text(), b: $(this).find('content').text()}; }); function fs(arr){for (var i in arr){(arr[i].a==LoginU)? blk +='<div id ="s-'+i+'" class="mypost">' : blk +='<div id ="s-'+i+'" class="anypost">'; blk +='<img alt="'+arr[i].a+'" src="" width="32"><strong>'+arr[i].a+' написал(а):</strong><div>'+arr[i].b+'</div></div>'; }}; var unq = [...new Set(as.map(item => 'username[]='+item.a))].join('&'); $.getJSON('/api.php?method=users.get&'+unq+'&fields=avatar,username',function(j) { var x = j.response.users; for (var k in x){if (x[k].avatar=='') {x[k].avatar=anyava}; $('div[id*="s-"]>img[alt="'+x[k].username+'"]').attr('src',x[k].avatar);} }); (ot==1)? fs(as): fs(as.reverse()); blk +='<a href="/viewtopic.php?id='+si+'&action=last">Перейти в тему</a></article>'; $('#profile-signature').after(blk); });} </script>
а так попробуй
баг вылечен
уже пилю коды для стенок
Герда, внёс на всякий случай поправки в варианты в посте №124 для тебя и для Mirra Bell
у вас не будет а у меня будет
У вас на личном форуме она и так есть, изгаляйтесь. Или там юзеров маловато?
Mirra Bell
Насчет тестирования: что конкретно надо сделать?
1. Создать какую-нить тему в отдельном форуме.
2. Поставить скрипт Ромыча с вариантом для заполненного доп. поля.
3. ?
ставь скрипт ромыча (который по доп.полу цепляет)
посмотри, прикрепилась ли анкета персонажа внизу профиля
сама анкета будет отображаться криво-косо, но это не важно. я подпилю код скрипта чтоб было ровно, главное проверить, что оно уже работает и отгружает.
Герда
Сделала на тестовом: http://almtest2019.mybb.ru/. Номер поля поменяла на тот, который есть там. Ничего не прикрепилось
Отредактировано Mirra Bell (Вт, 4 Авг 2020 20:49:53)
Mirra Bell
открой плз временно просмотр профиля гостям
Герда
Да на тестовике он вроде не закрыт
Mirra Bell
Герда
Да, нашла и открыла. Там скрипт стоял непоименованный. )
Mirra Bell
так... ясно.
попробую еще у себя - отпишусь.
спс за помощь
Romych
помоги плз
как добавить в дивы mypost, anypost дополнительный класс "hide", если в контенте НЕТ <div class="podarok">?
*применение = скрывать сообщения с флудом, оставлять тока оформленные по шаблону
где-то час уже кручу-верчу скрипт с этой целью, но просто так он не поддается
пример такой стенки: http://oaotr.0pk.ru/profile.php?id=16
вот на посты s-0, s-1 и s-2 должен встать класс hide - в них нима дива с подарком
Вы здесь » Единый форум поддержки » Новые возможности форумов » Стена в профиле