Jump to content

Featured Replies

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

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

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

  • Replies 140
  • Просмотров 8,4k
  • Created
  • Последний ответ

Лучшие авторы в теме

Most Popular Posts

  • Хороший плагин, но на 4.7.9 не работает. Поэтому решил его адаптировать. Это моя первая работа, так что ошибки очень вероятны. Перевод мой. На версиях ниже 4.7.9 не тестировал. (BIM) Quick S

  • edmsl На 4.7.11.1 работает:  Осталось только в CSS подправить стиль для темной темы. Попробую для Nexxe темы сделать.

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

Posted Images

comment_195247

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

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

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

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

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

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

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

Edited by edmsl

comment_195252

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

comment_195267

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

comment_195288

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

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

Edited by edmsl

comment_195291

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

Есть строка в 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() у элемента.

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

comment_195293
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 для числовых значений

comment_195319

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

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

Edited by edmsl

comment_195331

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

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

comment_195340

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

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

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

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

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

Edited by Zero108

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

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

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

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

comment_195344

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

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

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

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

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

(BIM) Quick Search 4.6.0.xml

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

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

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

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

comment_195352

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

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

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

Edited by Zero108

comment_195353

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

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

Videos - Trips.a108.net – Brave.jpg

Edited by Zero108

comment_195357
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 не отображаются превью в поиске.

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

comment_195358

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

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

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

Версия ips4 и php ?

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

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

Версия ips4 и php ?

4.7.11 и 8,1.

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.