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

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

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


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


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

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

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

275

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

1. хотят выводить 2-3 последних подарка в профиле в топике (эт надо делать, наверн, через поочередную подгрузку, чтоб страничка не повешалась от количества запросов).
2. хотят выводить количество подарков в профиле в топике (= количество постов в топике с подарками минус первый пост).

0

276

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

2. хотят выводить количество подарков в профиле в топике (= количество постов в топике с подарками минус первый пост).

Для этого придётся опять потеребить Ивана @kernel, чтоб получить всё необходимое одним запросом, напрашиваются дополнения в API к методу post.get

/api.php?method=post.get&topic_id=***&fields=num_replies

где num_replies - это количество ответов в топике
Можно на будущее и ещё количество просмотров добавить num_views и имя форума forum_name. Вдруг и эти значения в будущих задачах понадобятся.

+1

277

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

1. хотят выводить 2-3 последних подарка в профиле в топике (эт надо делать, наверн, через поочередную подгрузку, чтоб страничка не повешалась от количества запросов).
2. хотят выводить количество подарков в профиле в топике (= количество постов в топике с подарками минус первый пост).

Герда
наверное как-то так:

Код:
<script language="javascript">
var mc = 3,//число отображаемых сообщений/подарков из темы
sel = 1,//селектор подпись или доп.поле, 1 - подпись, 0 - доп.поле
pol = 1,//номер дополнительного поля fld1, fld2, fld3 и т.д. указываем только цифру
av = 0,//отображать ли аватары, 0 - для анкет и подарков, 1- соц.сеть
sort = 'desc',//Направление сортировки по времени. по умолчанию 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)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=(s)=> {(av==0) ? blk +='<a href="/viewtopic.php?id='+si+'&action=last">перейти в тему</a><span class="numpodarok" style="float: right;">Всего подарков: '+(s.num_replies-1)+'</span></article>' : 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,num_replies', function(d) {
var x = d.response;for (var i in x){DefaultAvatar(x[i]);MyPost(x[i]);Blk(x[i]);}EndStena(x[i]);
});}else{
$.when($.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir=desc&limit='+mc+'&fields=username,avatar,message,num_replies'), $.getJSON('/api.php?method=post.get&topic_id='+si+'&sort_dir=asc&limit=1&fields=username,avatar,message,num_replies')).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(x3[i]);
});}}
</script>

в режим Подарков переводит вот эта переменная:

av = 0,//отображать ли аватары, 0 - для анкет и подарков, 1- соц.сеть

+1

278

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

av = 0,//отображать ли аватары, 0 - для анкет и подарков, 1- соц.сеть

а почему режим подарков безаватарный? 0_о
смотри какая милота с ними раньше была:
https://forumupload.ru/uploads/0007/e3/f7/2/718730.jpg
https://forumupload.ru/uploads/0007/e3/f7/2/353766.jpg
ну или вот на моем форуме подарки с авами: https://forumd.ru/profile.php?id=2

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

еще - подарки в мини-профиле в топике не отображаются.
вот профили, где есть "стена" подарков/наград:
http://oaotr.0pk.ru/profile.php?id=16
http://oaotr.0pk.ru/profile.php?id=21

идея такая - сделать аналог "наград" и "подарков" от русфф (который не глючит и грузится с форума, а не с периодически неработающих серверов :D )
для этого не хватает опций:
1. отображать в профиле в топике ССЫЛКУ на подарки: Подарков: N (где N - количество постов, а "подарков" - ссылка на топик юзера с подарками)
2. отображать в профиле в топике последние подарки (0 - не отображать, N - количество подарков в топике)

при этом, кстати, опцию "fp = 0; //отображать первый пост темы и затем последние выбранные через лимит" - можно выпилить, если она делает скрипт сложнее, т.к. для подарков она однозначно не нужна - при таких опциях скрипт окончательно ударяется в узкую специализацию на чем-то таком.

Добавлено спустя 9 часов 54 минуты 53 секунды:

отображать в профиле в топике последние подарки (0 - не отображать, N - количество подарков в топике)

думаю, в топике не надо выводить аватар и автора, только контент поста - т.к. в отличие от страниц профиля, там картинки будут мелкие, некуда лепить всё это.

+1

279

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

а почему режим подарков безаватарный? 0_о

дык просили же в этой теме, я не сам такую опцию придумал ))

над остальным подумаю что можно сделать ;)

0


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