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

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

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


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


Запросы по скриптам #11

Сообщений 461 страница 480 из 1629

1

Предыдущая тема - Запросы по скриптам[9]

Инструменты для поиска и редактирования стиля (скриптов).

Как с помощью браузера можно определить элемент дизайна.

Каталог скриптов/CSS

Полезные скрипты, необходимые темы для новичков, а также ссылки на сайты рассказывающие что такое НТМЛ и CSS.

Типовые Вопросы (ЧаВо)

Ответы на часто задаваемые вопросы.

Как задавать вопросы! Разница между стилем и скриптом. ( Советы)

Плюс к названию темы еще и Памятка.

Предыдущая часть темы: Запросы по скриптам[10]

+1

461

@Deff
У меня возникла идея! Огромнейший недостаток форумов на MyBB – отсутствие поиска в теме. Мне думается, можно устранить этот недостаток, скрестив два этих скрипта поиска.
Если в теме ищутся сообщения пользователя:

Код:
<!-- Отображение сообщений пользователя в теме -->
<style type="text/css">.tuser {cursor: pointer; padding-left: .75em; opacity: .3;}
@media screen and (max-width: 540px) { .tuser {opacity: .25;}}</style>
<script type="text/javascript" >
$(function () {
$('.pa-author > a').after('<strong class="tuser" title="Показать сообщения пользователя в теме">🔍</strong>');
$('.pa-author').on('click', '.tuser', function (){
	let tm = FORUM.get('topic.subject').replace(/\s+/g,'+'), atr =$(this).prev('a').text();
	window.location.href = '/search.php?action=search&keywords='+tm+'&author='+atr+'&forum=&search_in=-1&sort_by=0&sort_dir=DESC&show_as=posts&search=%CE%F2%EF%F0%E0%E2%E8%F2%FC';
});});
</script>

наверное, можно функцию поиска в теме внедрить в этот поиск:

Код:
<!--Поиск справа-->
<style type="text/css">
.splContR {
z-index:-1;
width:250px!important; /*ширина окна*/
height:auto; /*высота окна*/
border-radius: 22px;
background: rgba(0,190,255,.8); /*фон окна*/
box-shadow: 1px 0 15px #0072FF inset,4px 4px 10px #3F403D!important; /*тень окна*/
top:-5px; /*отступ окна от верха кнопки*/
right:-2px; /*отступ окна от правого края монитора*/
padding:12px 40px 12px 15px!important;
color:#55271A; /*цвет шрифта*/
font: normal normal 400 12px/normal Georgia;
font-family:Georgia; /*шрифт*/
}
.splLinkR {
cursor:pointer;
}
.post-content span.mark{
background-color:#FFFE00; /*цвет маркера*/
color:#000;
}
</style>
<div id="seaDrom" style="position:fixed;right:4px;top:9px;z-index:100;">
<img class=splLinkR title="Искать!" src="/files/0017/52/b5/21243.png" width="35" border="0" onclick="PanelToggleR5($('form.splContR'))"/>
<form class=splContR data="0" style="position:absolute;margin-right:-360px"  id="punbbsearch"  method="get" action="/search.php">
<input type="hidden" name="action" value="search">
<input type="text" id="fld1s" name="keywords" size="30" placeholder=" Поиск по форуму " maxlength="100" oninput="$('form.splContR').addClass('active')" style="min-width:222px;margin-left:13px;padding:4px; box-shadow: -1px 1px 4px #222 inset;background:#FFFFFF;color:#000!important;"><input type="hidden" id="fld6" name="sort_dir"  value="DESC">
</form></div>
<script type="text/javascript">
if($('#pun-navlinks #navsearch').length==0)$('#seaDrom').hide();
(function (){
 function setcookie(a,b,c) {if(c){var d = new Date();d.setTime(d.getTime()+c);}if(a && b) document.cookie = a+'='+ encodeURIComponent(b) +(c ? '; expires='+d.toUTCString() : '');else return false;}
 function getcookie(a) {var b = new RegExp(a+'=([^;]){1,}');var c = b.exec(document.cookie);if(c) c = c[0].split('=');else return false;return c[1] ? decodeURIComponent(c[1]) : false;}
 PanelToggleR5 = function (a){
  setcookie('search_1',true,-100);
  var inpsea = a.find('#fld1s');
  var d = $.trim(inpsea.val());
  if(d=='')a.removeClass('active');
  setTimeout(function (){a.removeClass('active');},1700);
  d = d.split(/AND|OR/).join(' '); //Исключаем связки для запросов из маркирования!
  inpsea.val(inpsea.val().split('.').join('')); //Исключаем точки в отправке!
  if(a.hasClass('active')){a.removeClass('active');setcookie('search_1',d,22*60*1000);a.submit(); return false;}
  var b=a.attr('data'),c=a.css('margin-right');
  a.attr('data',c);a.stop().animate({'margin-right':b},'slow');
 }
 
 function fMark(s) {
   setcookie('search_2',true,-100);
 
   s = s.replace(/"/gim,'&quot;').replace(/</gim,'&lt;').replace(/>/gim,'&gt;');
   var arr = s.split(/\.\s*|,\s*|\s+|&quot;|[^<>&;#A-Za-z0-9_А-ЯЁа-яё]+/); arr.unshift(s);
   var bound = '\n==123456=0==\n';
   var lng = arr.length;
   var T1 = bound + arr[0] + bound;
   if(lng>2)
   for(var i=1;i<lng;i++){
     arr[i] = $.trim(arr[i]);
     var smb = arr[i].replace(/^&#?([\d\w])+;/ig,'$1').length;
     if(arr[i].length<2 ||smb<3 || T1.indexOf(bound + arr[i] + bound)!=-1)continue;
     T1 += arr[i]+ bound;
   }
 
   arr = T1.split(bound);arr.splice(0,1);arr.pop();//alert(arr);
   var lng = arr.length;
   var arrRegExp = [];
   for(i=0;i<lng;i++){
	var ss = arr[i];
	if(ss=='') continue;
	var s0 = ss.replace(/\*/gim,'\\*').replace(/\?/gim,'\\?');
	s0 = s0.replace(/\./gim,'\\.').replace(/\|/gim,'\\|');
	s0 = s0.replace(/\^/gim,'\\^').replace(/\$/gim,'\\$');
	s0 = s0.replace(/\{/gim,'\\{').replace(/\}/gim,'\\}');
	s0 = s0.replace(/\(/gim,'\\(').replace(/\)/gim,'\\)');
	arrRegExp.push(new RegExp('('+s0+')','gim'));
   }
 
    function replacer(str) {//alert(arrRegExp)
 
      var lng = arrRegExp.length;
 
      function replace2(str) {
        str=str.replace(/"/gim,'&quot;');
        for(i=0;i<lng;i++){
          str=str.replace(arrRegExp[i],'<span class="mark">$1</span>')
        }
	return str
      }
      return str.replace(/>[^<>]+</gim,replace2)
    }
 
   $('.post .post-content').find('p,pre,div.quote-box cite').each(function(){
      var thisHtml = $(this).html();
      var str = '#>' + thisHtml + '<#';
      str = replacer(str);
      str=str.substr(2);
      str=str.substr(0,str.length-2);
      if(thisHtml!=str)$(this).html(str);
  });
 
 }
 
 var s = getcookie('search_1');
  if(s&&document.URL.indexOf('/search.php?search_id=')!=-1){
 
    fMark(s);
 
    $('.post-links > ul> li> a[href*="/viewtopic.php?pid"]').click(function(){
        setcookie('search_2',s,3*60*1000);
    }); return;
  }
 
  var s2 = getcookie('search_2');
  if(s2 && document.URL.indexOf('/viewtopic.php?id=')!=-1){ fMark(s); }
 
}());
</script>

Что скажете?
В настоящее время скрипт простого поиска кнопкой шикарный, но больше декоративный. А так он стал бы чрезвычайно полезным!

+2

462

sshmmv, ну скрещивание не получится,
Но в принципе движок сервиса сейчас вроде как позволяет организовать поиск в теме... напомните в самом конце января... Идея понравилась!
Вопрос ток в том, что тогда скрипт будет искать только в текущей теме, где кликается лупа... (вариант с переключением на поиск по всему форуму как-то не просматривается)

Отредактировано Deff (Вт, 5 Янв 2021 01:46:40)

+2

463

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

напомните в самом конце января... Идея понравилась!

Обязательно напомню!  :yep:  Спасибо! (А вы себе в закладки поставьте.  :) )

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

Вопрос ток в том, что тогда скрипт будет искать только в текущей теме, где кликается лупа... (вариант с переключением на поиск по всему форуму как-то не просматривается)

Переключение вообще не нужно. Суть как раз в том, чтобы лупа искала только в той теме, в которой кликается по лупе – как это сделано в скрипте Romych:flag:  И название у лупы поменяется: с "Поиска по форуму" на "Искать в теме":cool:

Отредактировано sshmmv (Вт, 5 Янв 2021 06:20:06)

+2

464

@Deff
@Romych
@kernel
Может быть даже лучше будет, если поиск по теме сделать в виде классического окошка внизу страниц темы.
В полной версии:
https://i.imgur.com/6H6NJ6Ul.png
В версии для мобильных:
https://i.imgur.com/PPe3AsPm.png

@kernel
И внедрить его в функционал сервиса (заодно убрав ограничение на выдачу результатов поиска в 1000 сообщений).

Отредактировано sshmmv (Вт, 5 Янв 2021 07:21:41)

+3

465

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

Огромнейший недостаток форумов на MyBB – отсутствие поиска в теме. Мне думается, можно устранить этот недостаток, скрестив два этих скрипта поиска.

Увы, без правок в движке на данный момент за счёт js подобный поиск в теме организовать невозможно.
Объясню почему:

В поиске по автору в определённой теме строка поиска выглядит так:

/search.php?action=search&keywords=Здесь заголовок темы&author=Здесь автор&forum=&search_in=-1&sort_by=0&sort_dir=DESC&show_as=posts&search=%CE%F2%EF%F0%E0%E2%E8%F2%FC

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


убираем автора, строка поиска получается такой:

/search.php?action=search&keywords=Test&author=&forum=&search_in=-1&sort_by=0&sort_dir=DESC&show_as=posts&search=%CE%F2%EF%F0%E0%E2%E8%F2%FC

теперь мы находим тупо все сообщения темы под названием Test, но не можем выделить какое-то слово для поиска, ибо оно у нас зарезервировано под заголовок Test


мы можем сузить поиск добавив id форума в котором искать, строка получится такой:

/search.php?action=search&keywords=Test[/b]&author=&forum=12&search_in=-1&sort_by=0&sort_dir=DESC&show_as=posts&search=%CE%F2%EF%F0%E0%E2%E8%F2%FC

и это нам ничем особо не поможет


А вот если бы мы могли добавлять id темы в поисковую строку, вот так:

/search.php?action=search&keywords=Любое слово для поиска&author=&forum=12&topic=39454&search_in=-1&sort_by=0&sort_dir=DESC&show_as=posts&search=%CE%F2%EF%F0%E0%E2%E8%F2%FC

Тогда бы мы и смогли осуществлять поиск по теме полюбому искомому слову

+2

466

Romych
Ну тут можно не через поисковый запрос, а через Аякс-запрос темы целиком(&p=-1) и парсинг искомой фразы в оной, а далее  запомнить эти посты на время в localStorage, перейти к первопосту с найденым в текущей теме и помечать фразы на страницах темы, либо перезапросить список постов по ID с найденым через поисковый запрос постов по ID

Отредактировано Deff (Вт, 5 Янв 2021 15:25:38)

+2

467

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

+2

468

Romych
На тестовых форумах добавил параметр topics по аналогии с forums

+6

469

Прошу помощи, перестало всё работать Постеры... и Скрипты от пользователей 3

0

470

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

На тестовых форумах добавил параметр topics по аналогии с forums

Иван, испытал. Работает замечательно!  :cool:

+1

471

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

Romych
На тестовых форумах добавил параметр topics по аналогии с forums

Теперь будет поиск по теме?

0

472

СергейSerg написал(а):

Теперь будет поиск по теме?

Да. Тестируйте. Работает пока только на этом форуме. Сам поиск пока никак не оформлен и не стилизован.
https://forumupload.ru/uploads/0000/14/1c/15964/t650442.jpg

+2

473

Прошу помощи, перестало всё работать Постеры... и Скрипты от пользователей 3

0

474

У меня просьба по скрипту поиска постов автора в теме: можно ли при получении результата сразу вывести и количество этих постов? Где-нить вот там https://funkyimg.com/i/39SF9.jpg
А то получается, что можно навыводить постов на несколько страниц и считать их все равно вручную. )

Отредактировано Mirra Bell (Ср, 6 Янв 2021 15:01:32)

0

475

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

На тестовых форумах добавил параметр topics по аналогии с forums

Иван, после изменений здесь на тестовом и добавки в поиск forums перестал корректно работать поиск по автору, тот который при наведении на ник
https://i.imgur.com/skyPF1o.jpg
словно заголовок в ключевом слове для поиска больше не срабатывает (хотя понятно, что и для этого скрипта можно прописать id темы, а искомое слово оставить пустым)

+1

476

И еще в дополнение к этому скрипту: у нас есть хинт с инфой, который появляется на странице тем при наведении на тему. Предлагаю сделать подобный хинт при наведении на, к примеру, количество постов в теме, и в нем выводить небольшую табличку с авторами и количеством их постов в этой теме. Было бы очень круто.

0

477

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

У меня просьба по скрипту поиска постов автора в теме: можно ли при получении результата сразу вывести и количество этих постов? Где-нить вот там

так?

Код:
<!-- Отображение сообщений только определённого пользователя в теме -->
<style>.tuser {cursor: pointer;display:none;float: right;margin-right:17%;}.pa-author:hover .tuser{display:block;}</style>
<script type="text/javascript" >
$(function () {
if($('#pun-searchposts').length){ let kv = $('.post').size();$('#pun-crumbs1 > p > em:nth-child(4)').after(kv+' - ')}
$('.pa-author > a').after('<strong class="tuser" original-title="Показать все сообщения этого пользователя в данной теме">🔍</strong>');$('.tuser').tipsy({live:!0,fade:!0,gravity:'w'});
$('.pa-author').on('click', '.tuser', function (){let tm = FORUM.get('topic.subject').replace(/\s+/g,'+'), atr =$(this).prev('a').text();window.location.href = '/search.php?action=search&keywords='+tm+'&author='+atr+'&forum=&search_in=-1&sort_by=0&sort_dir=DESC&show_as=posts&search=%CE%F2%EF%F0%E0%E2%E8%F2%FC';
});});
</script>

0

478

Romych
У меня ничего не изменилось в строке результатов, но почему-то в самих постах появились отмеченные желтым маркером слова, которые я не искала.

0

479

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

У меня ничего не изменилось в строке результатов, но почему-то в самих постах появились отмеченные желтым маркером слова, которые я не искала.

а где испытываете? на своём форуме?

0

480

Romych
Да, на рабочем http://almarein.spybb.ru/. Скрипт в форме ответа

Отредактировано Mirra Bell (Ср, 6 Янв 2021 15:55:28)

0


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