Единый форум поддержки

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Единый форум поддержки » Новые возможности форумов » Стена в профиле


Стена в профиле

Сообщений 261 страница 274 из 274

261

Romych написал(а):

InnoDB, но на данный вопрос это никак не влияет.

Да я спросила потому что хотела попробовать вытянуть это одним запросом. )

0

262

Romych написал(а):
kernel написал(а):

Сейчас доработал работу с массивами, но опять же на этом форуме.

Испытал, да теперь хорошо (в запросе присутствует ник Герды)

Код:
https://forum.mybb.ru/api.php?method=users.get&username[]=%C3%E5%F0%E4%E0&username[]=kernel&username[]=Romych&fields=user_id,username,avatar

правда в ответе значения для кириллического ника пришли последними, т.е. не в порядке запроса, но это несущественно ;)

теперь вопрос на засыпку.
попались ребята, которые используют спец-символы в никах: https://nolf.rusff.ru/profile.php?id=4

у них, я так понимаю, из-за устройства API авы не изъять.
если не изъять, можно как-то пихнуть им аву по умолчанию?

0

263

Герда написал(а):

попались ребята, которые используют спец-символы в никах: https://nolf.rusff.ru/profile.php?id=4

у неё как раз ава по нику берётся без проблем

Код:
https://nolf.rusff.ru/api.php?method=users.get&username[]=Silvia%20Marino&fields=user_id,username,avatar

а вот таких товарищей (ссылка ниже)
https://nolf.rusff.ru/profile.php?id=46
только по id

Код:
https://nolf.rusff.ru/api.php?method=users.get&user_id=46&fields=user_id,username,avatar

0

264

Romych
я ее профиль как образец выводимого контента. ниже в этом профиле в стене висит подарка от товарища с японским (или корейским? или китайским?) ником

можно как-то пофиксить способ отображения авок для таких аутентичных ролёвок?

0

265

Герда написал(а):

можно как-то пофиксить способ отображения авок для таких аутентичных ролёвок?

вижу что применяется старая версия скрипта, в ней действительно применяется запрос из массива ников

var unq = [...new Set(as.map(item => 'username[]='+item.a))].join('&');
$.getJSON('/api.php?method=users.get&'+unq+'&fields=avatar,username',function(j) {

я бы рекомендовал применить комбайн из 254 поста, с ним таких проблем быть не должно

+1

266

Герда написал(а):

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

как-то так:

var mc = 5;//число отображаемых сообщений из темы
var sel = 1;//селектор подпись или доп.поле, 1 - подпись, 0 - доп.поле
var pol = 1;//номер дополнительного поля fld1, fld2, fld3 и т.д. указываем только цифру
var av = 0;//отображать ли аватары, 0 - для анкет и подарков, 1- соц.сеть
var sort = 'desc';//Направление сортировки по времени. По умолчанию asc (по возрастанию).Доступные значения: asc, desc
var first = 0;//Отображать первое сообщение темы

Mirra Bell написал(а):

А нельзя как-то реализовать механизм закрепления поста как это сделано в топиках? Там можно закрепить первый пост темы и он будет первым на всех страницах.

Герда
Mirra Bell,  таки добрался, тестируйте

Код:
<script language="javascript">
var mc = 5,//число отображаемых сообщений из темы
sel = 1,//селектор подпись или доп.поле, 1 - подпись, 0 - доп.поле
pol = 1,//номер дополнительного пол¤ fld1, fld2, fld3 и т.д. указываем только цифру
av = 1,//отображать ли аватары, 0 - для анкет и подарков, 1- соц.сеть
sort = 'asc',//Направление сортировки по времени. по умолчанию asc (по возрастанию).Доступные значения: asc, desc
anyava = 'http://forumstatic.ru/files/0000/14/1c/20038.jpg',//аватар по умолчанию для тех, у кого он не установлен
fp = 0; //отображать первый пост темы и затем последние выбранные через лимит, 0 - нет (по умолчанию), 1 -да
if($('#viewprofile').length){
var LoginU = $('#profile-name').text(), si, i=0,
blk = '<article class="stena"><h1>Стена</h1>',
DefaultAvatar=(s)=> {if(s.avatar==undefined)s.avatar=anyava},
MyPost=(s)=>(s.username==LoginU)? blk +='<div id ="s-'+i+'" class="mypost">' : blk +='<div id ="s-'+i+'" class="anypost">',
Blk=(s)=>(av==1) ? blk +='<img alt="'+s.avatar+'" src="'+s.avatar+'" width="32"><strong>'+s.username+' написал(а):</strong><div>'+s.message+'</div></div>' : blk +='<div>'+s.message+'</div></div>',
EndStena=()=> {blk +='<a href="/viewtopic.php?id='+si+'&action=last">перейти в тему</a></article>';$('#profile-signature').after(blk);}
(sel==1) ? si=parseInt($('#profile-signature >ul >p >a[href*="viewtopic.php"]').eq(-1).attr('href').split(/=/)[1]) : si=parseInt($('#viewprofile #pa-fld'+pol+' strong a[href*="viewtopic.php"]').eq(-1).attr('href').split(/=/)[1]);
if (fp == 0) {
$.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir='+sort+'&limit='+mc+'&fields=username,avatar,message', function(d) {
var x = d.response;for (var i in x){DefaultAvatar(x[i]);MyPost(x[i]);Blk(x[i]);}EndStena();
});}else{
$.when($.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir=desc&limit='+mc+'&fields=username,avatar,message'), $.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir=asc&limit=1&fields=username,avatar,message')).done(function (j1, j2){
var x2 = j2[0].response, x3 = j1[0].response; DefaultAvatar(x2[0]);
(av==1) ? blk +='<div id ="s-" class="myFirst"><img alt="'+x2[0].avatar+'" src="'+x2[0].avatar+'" width="32"><strong>'+x2[0].username+' написал(а):</strong><div>'+x2[0].message+'</div></div>' : blk +='<div id ="s-" class="myFirst"><div>'+x2[0].message+'</div></div>';	   
for (var i in x3){DefaultAvatar(x3[i]); MyPost(x3[i]); Blk(x3[i]);} EndStena();
});}}
</script>

fp = 0 - первый (закреплённый пост) выключен, fp = 1 - включён

+4

267

Romych
а кто удалил мое сообщение? что это такое? в моей же теме

тестирую- сортировка  не менякется

Отредактировано tartar1 (Сб, 22 Авг 2020 11:20:03)

-1

268

tartar1 написал(а):

а кто удалил мое сообщение?

вопрос не ко мне

tartar1 написал(а):

тестирую- сортировка  не менякется

дык, так и задумано, читайте внимательно:

Герда написал(а):

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

Если при этом включить сортировку по возрастанию, то у вас будет первый закреплённый пост и после него опять же первый пост

0

269

Romych
поменяйте тогда на убывание. чтоб последнее внизу

-1

270

tartar1 написал(а):

поменяйте тогда на убывание. чтоб последнее внизу

Тестируйте:

Код:
<script language="javascript">
var mc = 5,//число отображаемых сообщений из темы
sel = 1,//селектор подпись или доп.поле, 1 - подпись, 0 - доп.поле
pol = 1,//номер дополнительного пол¤ fld1, fld2, fld3 и т.д. указываем только цифру
av = 1,//отображать ли аватары, 0 - для анкет и подарков, 1- соц.сеть
sort = 'asc',//Направление сортировки по времени. по умолчанию asc (по возрастанию).Доступные значения: asc, desc
anyava = 'http://forumstatic.ru/files/0000/14/1c/20038.jpg',//аватар по умолчанию для тех, у кого он не установлен
fp = 1; //отображать первый пост темы и затем последние выбранные через лимит, 0 - нет (по умолчанию), 1 -да
if($('#viewprofile').length){
var LoginU = $('#profile-name').text(), si, i=0,
blk = '<article class="stena"><h1>Стена</h1>',
DefaultAvatar=(s)=> {if(s.avatar==undefined)s.avatar=anyava},
MyPost=(s)=>(s.username==LoginU)? blk +='<div id ="s-'+i+'" class="mypost">' : blk +='<div id ="s-'+i+'" class="anypost">',
Blk=(s)=>(av==1) ? blk +='<img alt="'+s.avatar+'" src="'+s.avatar+'" width="32"><strong>'+s.username+' написал(а):</strong><div>'+s.message+'</div></div>' : blk +='<div>'+s.message+'</div></div>',
EndStena=()=> {blk +='<a href="/viewtopic.php?id='+si+'&action=last">перейти в тему</a></article>';$('#profile-signature').after(blk);}
(sel==1) ? si=parseInt($('#profile-signature >ul >p >a[href*="viewtopic.php"]').eq(-1).attr('href').split(/=/)[1]) : si=parseInt($('#viewprofile #pa-fld'+pol+' strong a[href*="viewtopic.php"]').eq(-1).attr('href').split(/=/)[1]);
if (fp == 0) {
$.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir='+sort+'&limit='+mc+'&fields=username,avatar,message', function(d) {
var x = d.response;for (var i in x){DefaultAvatar(x[i]);MyPost(x[i]);Blk(x[i]);}EndStena();
});}else{
$.when($.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir=desc&limit='+mc+'&fields=username,avatar,message'), $.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir=asc&limit=1&fields=username,avatar,message')).done(function (j1, j2){
var x2 = j2[0].response, x3 = j1[0].response.reverse(); DefaultAvatar(x2[0]);
(av==1) ? blk +='<div id ="s-" class="myFirst"><img alt="'+x2[0].avatar+'" src="'+x2[0].avatar+'" width="32"><strong>'+x2[0].username+' написал(а):</strong><div>'+x2[0].message+'</div></div>' : blk +='<div id ="s-" class="myFirst"><div>'+x2[0].message+'</div></div>';	   
for (var i in x3){DefaultAvatar(x3[i]); MyPost(x3[i]); Blk(x3[i]);} EndStena();
});}}
</script>

+1

271

Romych
чудесно
а можно картинку-полосу вставить между 1 и остальными постами?

0

272

tartar1 написал(а):

а можно картинку-полосу вставить между 1 и остальными постами?

так?

Код:
<script language="javascript">
var mc = 5,//число отображаемых сообщений из темы
sel = 1,//селектор подпись или доп.поле, 1 - подпись, 0 - доп.поле
pol = 1,//номер дополнительного пол¤ fld1, fld2, fld3 и т.д. указываем только цифру
av = 1,//отображать ли аватары, 0 - для анкет и подарков, 1- соц.сеть
sort = 'asc',//Направление сортировки по времени. по умолчанию asc (по возрастанию).Доступные значения: asc, desc
anyava = 'http://forumstatic.ru/files/0000/14/1c/20038.jpg',//аватар по умолчанию для тех, у кого он не установлен
fp = 1; //отображать первый пост темы и затем последние выбранные через лимит, 0 - нет (по умолчанию), 1 -да
if($('#viewprofile').length){
var LoginU = $('#profile-name').text(), si, i=0,
blk = '<article class="stena"><h1>Стена</h1>',
DefaultAvatar=(s)=> {if(s.avatar==undefined)s.avatar=anyava},
MyPost=(s)=>(s.username==LoginU)? blk +='<div id ="s-'+i+'" class="mypost">' : blk +='<div id ="s-'+i+'" class="anypost">',
Blk=(s)=>(av==1) ? blk +='<img alt="'+s.avatar+'" src="'+s.avatar+'" width="32"><strong>'+s.username+' написал(а):</strong><div>'+s.message+'</div></div>' : blk +='<div>'+s.message+'</div></div>',
EndStena=()=> {blk +='<a href="/viewtopic.php?id='+si+'&action=last">перейти в тему</a></article>';$('#profile-signature').after(blk);}
(sel==1) ? si=parseInt($('#profile-signature >ul >p >a[href*="viewtopic.php"]').eq(-1).attr('href').split(/=/)[1]) : si=parseInt($('#viewprofile #pa-fld'+pol+' strong a[href*="viewtopic.php"]').eq(-1).attr('href').split(/=/)[1]);
if (fp == 0) {
$.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir='+sort+'&limit='+mc+'&fields=username,avatar,message', function(d) {
var x = d.response;for (var i in x){DefaultAvatar(x[i]);MyPost(x[i]);Blk(x[i]);}EndStena();
});}else{
$.when($.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir=desc&limit='+mc+'&fields=username,avatar,message'), $.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir=asc&limit=1&fields=username,avatar,message')).done(function (j1, j2){
var x2 = j2[0].response, x3 = j1[0].response.reverse(); DefaultAvatar(x2[0]);
(av==1) ? blk +='<div id ="s-" class="myFirst"><img alt="'+x2[0].avatar+'" src="'+x2[0].avatar+'" width="32"><strong>'+x2[0].username+' написал(а):</strong><div>'+x2[0].message+'</div></div><br><hr>' : blk +='<div id ="s-" class="myFirst"><div>'+x2[0].message+'</div></div><br><hr>';	   
for (var i in x3){DefaultAvatar(x3[i]); MyPost(x3[i]); Blk(x3[i]);} EndStena();
});}}
</script>

0

273

Romych
подходит. если первый пост написал хозяин профиля он может его изменять. как картинк на авторской странице и резюме

вы подсветите где в коде полоса чтоб можно было вставить картинку. я то увидел
:blush:

0

274

Romych
а можно ссылку на редактирование первого поста вывести под первым постом? для админа и автора

0


Вы здесь » Единый форум поддержки » Новые возможности форумов » Стена в профиле