Перейти к содержанию

(BIM) Quick Search


Dobrochas

Рекомендуемые сообщения

3 часа назад, edmsl сказал:

Может из-за этого.

нет, эти ошибки с этим не связаны, это кривой итератор (js/css) плагинов dev режима, можно не обращать на это внимания.

Ссылка на комментарий
Поделиться на другие сайты

На двух разных ПК, двух разных движках, в 5-ти разных браузерах проверял. Нет возможности в дев режиме ни добавить виджет, ни увидеть уже установленный. И JS код именно виджетов не обновляется.

Ссылка на комментарий
Поделиться на другие сайты

16 минут назад, edmsl сказал:

На двух разных ПК, двух разных движках, в 5-ти разных браузерах проверял. Нет возможности в дев режиме ни добавить виджет, ни увидеть уже установленный. И JS код именно виджетов не обновляется.

Виджет из плагина не полностью совместим с последней версией ips, можешь создать свой и сравнить их

Ссылка на комментарий
Поделиться на другие сайты

25 минут назад, Exception сказал:

Виджет из плагина не полностью совместим с последней версией ips

Действительно, новый созданный виджет есть в списке и отображается. Спасибо. Буду переделывать старый.

Изменено пользователем edmsl
Ссылка на комментарий
Поделиться на другие сайты

В общем, весь плагин состоит из говнокода. Я еще когда начал его просматривать, мне сразу не понравились некоторые моменты (например, объявление переменных в середине кода, а не в начале), но я подумал, что может для PHP это обычная практика, но JS код тоже написан так же, а уж с ним я работаю давно, и лучшие практики мне знакомы. В общем, пришлось править и вроде как победил. Буду тестить.

Ссылка на комментарий
Поделиться на другие сайты

edmsl Вообще странно, что современные разработчики сайтов, например, invision community, битрикс, без пинка не внедряют умный поиск (это когда при наборе запроса в поисковой строке вываливаются результаты во время набора) в свои продукты.

Ссылка на комментарий
Поделиться на другие сайты

Если быть откровенными, то движки в целом сильно отстают от современных трендов сайтостроения.

Ссылка на комментарий
Поделиться на другие сайты

Есть в JS коде код шаблона и в нем строка

<span id='bimQS_advSearch'>{{#lang}}bimQS_advSearchBnt{{/lang}}</span>\
Для этих переменных создается отельный файл jslang.php. Так вот можно ли сюда как-то передать переменную? В обычных lang строках ставится знак %. А вот как здесь передать я так и не понял.
Можно генерировать html на php, но хотелось бы через переменные.
Изменено пользователем edmsl
Ссылка на комментарий
Поделиться на другие сайты

И еще вопрос по той же теме.

Есть строка в php:

$html = \count($data) > 0 ? \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' )->bimQuickSearch( $data ) : "<tr><td>" . \IPS\Member::loggedIn()->language()->addToStack( 'search_found', FALSE, array( 'sprintf' => array( 0 ) )) . "</td></tr>";

Как из записи "<tr><td>" . \IPS\Member::loggedIn()->language()->addToStack( 'search_found', FALSE, array( 'sprintf' => array( 0 ) )) . "</td></tr>" получить строку <tr><td>Found 0 result</td></tr>?

Если писать как я сделал выше, то получаю <tr><td>Found {# [1:result][?:results]}</td></tr>. Эта строка потом идет в функцию html() у элемента.

Всяко пробовал, но ничего не выходит.

Ссылка на комментарий
Поделиться на другие сайты

44 минуты назад, edmsl сказал:

И еще вопрос по той же теме.

Есть строка в php:

$html = \count($data) > 0 ? \IPS\Theme::i()->getTemplate( 'plugins', 'core', 'global' )->bimQuickSearch( $data ) : "<tr><td>" . \IPS\Member::loggedIn()->language()->addToStack( 'search_found', FALSE, array( 'sprintf' => array( 0 ) )) . "</td></tr>";

Как из записи "<tr><td>" . \IPS\Member::loggedIn()->language()->addToStack( 'search_found', FALSE, array( 'sprintf' => array( 0 ) )) . "</td></tr>" получить строку <tr><td>Found 0 result</td></tr>?

Если писать как я сделал выше, то получаю <tr><td>Found {# [1:result][?:results]}</td></tr>. Эта строка потом идет в функцию html() у элемента.

Всяко пробовал, но ничего не выходит.

использовать pluralize вместо sprintf для числовых значений

Ссылка на комментарий
Поделиться на другие сайты

Итак, поправил виджет и реализовал поиск по форуму, включая подфорумы.

Exception Что касается поиска по вложенным форумам. Чтобы получить массив id дочерних форумов, добавил в хук плагина след. код.

Спойлер
class hook100 extends _HOOK_CLASS_
{
	private $childrenIds = [];

	private function getChildrenIds($forum)
	{
		$this->childrenIds[] = $forum->_id;

		foreach ($forum->children() as $node) {
			$this->childrenIds[] = $node->_id;
			foreach ($node->children() as $child) {
				$this->getChildrenIds($child);
			}
		}

		return $this->childrenIds;
	}
...

 

Его я скопировал из класса IPS\forums\modules\front\forums\_forums, т.к. я не нашел готового метода для этого. Затем использовал так

Спойлер
$nodes = \IPS\Request::i()->nodes;

if ( \intval( $nodes ) > 0)
{
	if (\IPS\Request::i()->type == 'forums_topic') {
		$ids = explode(',', $nodes);

		if (\count($ids) > 1) {
			$filter->onlyInContainers( $ids );
		} else {
			$forum = \IPS\forums\Forum::load( \intval( $nodes ) );
			$filter->onlyInContainers( $this->getChildrenIds( $forum ) );
		}
	} else {
		$filter->onlyInContainers( array( \IPS\Request::i()->nodes ) );
	}
}

 

Или может все же есть более простой (готовый) способ получить требуемый результат?

(BIM) Quick Search 4.6.0.xml

Изменено пользователем edmsl
Ссылка на комментарий
Поделиться на другие сайты

Осталось разобраться с elasticsearch, но с ходу вчера мне не удалось его запустить на винде. Буду разбираться.

Ссылка на комментарий
Поделиться на другие сайты

Я правильно понимаю, что движком не предусмотрена возможность поиска по 2-м категориям? Только одна или все сразу. Допустим, я хочу выполнить поиск только по файлам и галерее, но я не могу их выбрать, т.к. селектор не поддерживает мультивыбор. Отдельно файлы, отдельно галерея.

Возможно ли это реализовать через свой кастомный запрос к БД?

Ссылка на комментарий
Поделиться на другие сайты

В 28.07.2023 в 21:49, Zero108 сказал:

Не ищет по двум и более словам

Запустил elasticsearch и да, проблема есть. Буду копаться.

Ссылка на комментарий
Поделиться на другие сайты

Проблема заключается в добавлении символа * в конец поискового запроса при включенной опции Search incomplete words в плагине. Это так называемый поиск с помощью Wildcard Query, когда звездочка подразумевает любые символы. С обычным поиском это работает, а вот в Эластике нет. Работает только с одним словом, без пробелов. Похоже, что это внутренние механизмы Эластика. На сайте пишут, что в данном случае не нужно использовать Wildcard.

Я не знаю, возможно ли как-то изменять принцип работы поиска Эластика. Если нет, то придется для него опцию Search incomplete words отключить.

Ссылка на комментарий
Поделиться на другие сайты

32 минуты назад, edmsl сказал:

Я не знаю, возможно ли как-то изменять принцип работы поиска Эластика. Если нет, то придется для него опцию Search incomplete words отключить.

Лучше отключить и не отображать настройку при включенном эластике. Честно говоря, особых преимуществ  эластика перед обычным поиском средставми mysql при небольших нагрузках не заметил. Есть различия в результатах поиска?

Изменено пользователем Zero108
Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Zero108 сказал:

Есть различия в результатах поиска?

Я не заметил. Но у меня на тестовом сайте и контента мало.

Сделаю тогда эту опцию недоступной при использовании Эластика.

Ссылка на комментарий
Поделиться на другие сайты

Надеюсь, финальная итерация.

Поправил выдачу результатов по конкретной записи (например, файлу. Видео из Videos, надуюсь, работает по тому же принципу), когда в выдачу попадали другие записи.

Расширил настройки виджета. Теперь можно убрать показ окна настроек поиска. Удобно, если нужно сделать поиск по какой-то одной категории. Например, только по файлам.

Поправил некоторые свои ошибки.

Если не будет проблем, то буду считать работу завершенной.

(BIM) Quick Search 4.6.0.xml

Ссылка на комментарий
Поделиться на другие сайты

3 часа назад, edmsl сказал:

Теперь можно убрать показ окна настроек поиска.

О чем идет речь? Выпадающий список разделов сайта в строке поиска и раньше можно было отключать.

Обозначил как 4.6.1.

Ссылка на комментарий
Поделиться на другие сайты

Хочу сообщить о баге: если поисковая система default (MySQL), а в плагине включена настройка Search incomplete words, то при переключении поисковой системы на эластик плагин перестает работать (поисковых результатов 0 при любом запросе). Видимо, нужно внести изменения, чтобы настройка Search incomplete words не учитывалась или еще что-то.

Не работает в корневом разделе форумов https://a108.net/forums/ (не ищет по подфорумам).

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

Изменено пользователем Zero108
Ссылка на комментарий
Поделиться на другие сайты

И сделать переиндексацию поиска.

И еще маленькая просьба. В приложении Videos не отображаются превью в поиске. Превью можно добавлять в виде вложения, в виде ссылки, либо создавать автоматический при добавлении или редактировании видео. У меня, например, большинство превью в виде ссылок вида https://i.ytimg.com/vi/CBiuig13YRU/hqdefault.jpg Можно ли сделать, чтобы в поиске по Videos появлялись превью?

Videos - Trips.a108.net – Brave.jpg

Изменено пользователем Zero108
Ссылка на комментарий
Поделиться на другие сайты

9 часов назад, Zero108 сказал:

О чем идет речь?

Об этом.

Спойлер

firefox_2023-08-06_08-54-55.thumb.jpg.5907d3596ca62dbdbc1c8c9faec98f83.jpg

firefox_2023-08-06_08-57-35.jpg.3514c1da61fe28a0be984210441c7a63.jpg

Даже если его можно отключить, это будет работать глобально. А так это опция влияет только на конкретный виджет.

8 часов назад, Zero108 сказал:

Хочу сообщить о баге

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

8 часов назад, Zero108 сказал:

В приложении Videos не отображаются превью в поиске.

Попробую добавить.

Ссылка на комментарий
Поделиться на другие сайты

Есть проблема с Videos. Это приложение и при его установке не создается папка dev. Из-за этого вылетают ошибки и я не могу работать над плагином. Как быть?

Ссылка на комментарий
Поделиться на другие сайты

1 час назад, edmsl сказал:

Есть проблема с Videos. Это приложение и при его установке не создается папка dev. Из-за этого вылетают ошибки и я не могу работать над плагином. Как быть?

Версия ips4 и php ?

Устанавливали с нуля или обновляли?

Ссылка на комментарий
Поделиться на другие сайты

3 минуты назад, aLEX49566 сказал:

Версия ips4 и php ?

4.7.11 и 8,1.

Ставил с нуля. Для плагинов папка дев создается только при установке в дев режиме. А вот для приложений не создается никак.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...