Romych
всё дело в кодировке. api пытается определить кодировку и когда ему передается строка, то в данном случае он определяет, что это cp1251. А когда передается массив, то определить не может. API изначально, насколько понимаю, реализован без возможности работать с массивами во входных параметрах. @kozhilya добавил работу с массивом, но возникают такие вот тонкости. Есть три варианта:
1. Собственно передавать в другой кодировке параметры.
2. Сделать рекурсивную распаковку массивов для определения.
3. Использовать username как строку и перечислять ники через запятую.
Займусь вторым вариантом. С большим удивлением обнаружил, что в нике может использоваться запятая )
Стена в профиле
Сообщений 101 страница 120 из 280
Поделиться101Сб, 1 Авг 2020 22:52:58
Поделиться102Сб, 1 Авг 2020 22:56:21
Займусь вторым вариантом. С большим удивлением обнаружил, что в нике может использоваться запятая )
Ого!
Видимо с этим не справился Макс, если в описании API он указал возможность username через запятую, а по факту не работает
Поделиться103Сб, 1 Авг 2020 23:08:24
На этом форуме кодировка должна правильно определяться для массива.
Видимо с этим не справился Макс, если в описании API он указал возможность username через запятую, а по факту не работает
Вероятно, когда он аннонсировал, это работало. Но без учета возможности наличия запятой в нике.
Поделиться104Сб, 1 Авг 2020 23:19:52
Герда
ну пока выкладываю вот такую версию, где аватары для всех ников со стены берутся одним запросом (и без дубликатов), но с отсутствием ответа на кириллические ники
<script language="javascript"> var ot = 0; //отображение сообщений на стене 0 по убыванию, 1 по возрастанию var mc = 5; //число отображаемых сообщений из темы if($('#profile-signature').length){ var LoginU = $('#profile-name').text(), ss = $('#profile-signature >ul >p >a[href*="viewtopic.php"]').eq(-1), s2 =$(ss).attr('href'), as = [],si = s2.split(/=/)[1], 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){$('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>
Поделиться105Вс, 2 Авг 2020 00:32:49
Герда
ну пока выкладываю вот такую версию, где аватары для всех ников со стены берутся одним запросом (и без дубликатов), но с отсутствием ответа на кириллические ники
спасибо.
вернусь к этому как только закончу с тестами селекторов.
Поделиться106Пн, 3 Авг 2020 22:00:36
kernel
я смотрю такое построение массива из ников в запросе больше не работает, если присутствует кириллический ник
username[]=%CF%E0%F0%E4&username[]=Ant&username[]=Riko
произошли какие-то изменения в данном методе? или всё пока в процессе разработки?
И еще надо учесть, что в этом же поле кроме непосредственно ссылки может сидеть и другая инфа.
Можете дать ссылку на профиль с таким заполненным полем для примера?
Поделиться107Пн, 3 Авг 2020 22:15:33
kernel
я смотрю такое построение массива из ников в запросе больше не работает, если присутствует кириллический никusername[]=%CF%E0%F0%E4&username[]=Ant&username[]=Riko
произошли какие-то изменения в данном методе? или всё пока в процессе разработки?
Сейчас доработал работу с массивами, но опять же на этом форуме.
Поделиться108Пн, 3 Авг 2020 22:30:56
Сейчас доработал работу с массивами, но опять же на этом форуме.
Испытал, да теперь хорошо (в запросе присутствует ник Герды)
https://forum.mybb.ru/api.php?method=users.get&username[]=%C3%E5%F0%E4%E0&username[]=kernel&username[]=Romych&fields=user_id,username,avatar
правда в ответе значения для кириллического ника пришли последними, т.е. не в порядке запроса, но это несущественно
Поделиться109Пн, 3 Авг 2020 22:40:47
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правда в ответе значения для кириллического ника пришли последними, т.е. не в порядке запроса, но это не существенно
Порядок возврата только случайно может совпасть с порядком входящего массива. Там используется сортировка, если явно не указано, то сортировка идет по id.
Поделиться110Пн, 3 Авг 2020 22:42:38
Порядок возврата только случайно может совпасть с порядком входящего массива. Там используется сортировка, если явно не указано, то сортировка идет по id.
Ок, понял Значит можно запускать данный метод запроса по никам и для других форумов. Всё работает!
Поделиться111Вт, 4 Авг 2020 05:09:56
Герда
А можно потом на заценку выставить что вышло
Стена в профиле
Поделиться112Вт, 4 Авг 2020 06:10:24
kernel
а можно на этом форуме стену?
Поделиться113Вт, 4 Авг 2020 07:24:43
Можете дать ссылку на профиль с таким заполненным полем для примера?
В профиле любого активного игрока на форуме http://almarein.spybb.ru/. Доп поле fld1. Для экономии в доп поля часто впихивают как можно больше.
Поделиться114Вт, 4 Авг 2020 07:26:35
а можно на этом форуме стену?
Нахрен она тут нужна? Это форум техподдержки, не забыли?
Поделиться115Вт, 4 Авг 2020 08:19:38
у вас не будет а у меня будет
опять умом блещете?
Поделиться117Вт, 4 Авг 2020 09:39:45
В профиле любого активного игрока на форуме http://almarein.spybb.ru/. Доп поле fld1. Для экономии в доп поля часто впихивают как можно больше.
Mirra Bell Испытайте так:
<script language="javascript"> var ot = 0; //отображение сообщений на стене 0 по убыванию, 1 по возрастанию var mc = 5; //число отображаемых сообщений из темы if($('#viewprofile ').length){ var LoginU = $('#profile-name').text(), ss = $('#viewprofile #pa-fld1 strong a[href*="viewtopic.php"]').eq(-1), s2 =$(ss).attr('href'), as = [],si = s2.split(/=/)[1], 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){$('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>
Герда, теперь проблем с аватарами для кириллических ников нет, благодаря kernel! Так что на основе скрипта в посте №104 можно делать окончательные версии
Поделиться118Вт, 4 Авг 2020 11:40:35
Герда, теперь проблем с аватарами для кириллических ников нет, благодаря kernel! Так что на основе скрипта в посте №104 можно делать окончательные версии
Я залипла в перепиливании своих дизайнов под новые реалии.))
Уже почти закончила и вернусь к допиливанию стенок
Поделиться119Вт, 4 Авг 2020 15:46:05
Mirra Bell
потестишь, пожалуйста, экспорт из допполя: Стена в профиле ?
отпишись, работает ли - я припаяю немного другой код, чтоб наследовались стили топика и ничего не выезжало.
Поделиться120Вт, 4 Авг 2020 16:57:57
Romych
ты неправильно понял мое предложение по внесению отдельного класса для постов автора.
нужно, чтоб класс .mypost присваивался сообщениям АВТОРА профиля.
(сейчас он присваивается сообщениям юзера, который смотрит форум)
что дает этот класс?
например при оформлении стенки "соц-сетей" можно поста авторы профиля оформить как основной контент, а посты других людей - как комментарии к нему.
например можно оформить стенку а-ля "фидбек" в стиле мессанджеров, где посты других юзеров будут оформляться слева, а ответы комменты автора профиля - справа и другим цветом.
вот такая идея.
=======================
Добавлено спустя 58 минут 45 секунд:
Ахтунг!
Все еще присутствует баг:
количество сообщений не задается!
http://oaotr.0pk.ru/profile.php?id=16
стоит 5 сообщений, выгрузились ВСЕ!
еще момент. как добавить ссылку на аватар по умолчанию? че-то туплю с этим.