Jump to content

Featured Replies

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

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

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

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

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

Most Popular Posts

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

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

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

Posted Images

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

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

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

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

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

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

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

Edited by edmsl

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

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

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

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

Edited by 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

Edited by edmsl

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

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

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

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

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

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

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

Edited by 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/ (не ищет по подфорумам).

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

Edited by Zero108

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

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

Videos - Trips.a108.net – Brave.jpg

Edited by 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.

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

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.