1 августа, 20231 yr comment_195246 3 часа назад, edmsl сказал: Может из-за этого. нет, эти ошибки с этим не связаны, это кривой итератор (js/css) плагинов dev режима, можно не обращать на это внимания.
1 августа, 20231 yr comment_195247 На двух разных ПК, двух разных движках, в 5-ти разных браузерах проверял. Нет возможности в дев режиме ни добавить виджет, ни увидеть уже установленный. И JS код именно виджетов не обновляется.
1 августа, 20231 yr comment_195249 16 минут назад, edmsl сказал: На двух разных ПК, двух разных движках, в 5-ти разных браузерах проверял. Нет возможности в дев режиме ни добавить виджет, ни увидеть уже установленный. И JS код именно виджетов не обновляется. Виджет из плагина не полностью совместим с последней версией ips, можешь создать свой и сравнить их
1 августа, 20231 yr comment_195251 25 минут назад, Exception сказал: Виджет из плагина не полностью совместим с последней версией ips Действительно, новый созданный виджет есть в списке и отображается. Спасибо. Буду переделывать старый. Edited 1 августа, 20231 yr by edmsl
1 августа, 20231 yr comment_195252 В общем, весь плагин состоит из говнокода. Я еще когда начал его просматривать, мне сразу не понравились некоторые моменты (например, объявление переменных в середине кода, а не в начале), но я подумал, что может для PHP это обычная практика, но JS код тоже написан так же, а уж с ним я работаю давно, и лучшие практики мне знакомы. В общем, пришлось править и вроде как победил. Буду тестить.
1 августа, 20231 yr comment_195267 edmsl Вообще странно, что современные разработчики сайтов, например, invision community, битрикс, без пинка не внедряют умный поиск (это когда при наборе запроса в поисковой строке вываливаются результаты во время набора) в свои продукты.
2 августа, 20231 yr comment_195287 Если быть откровенными, то движки в целом сильно отстают от современных трендов сайтостроения.
2 августа, 20231 yr comment_195288 Есть в JS коде код шаблона и в нем строка <span id='bimQS_advSearch'>{{#lang}}bimQS_advSearchBnt{{/lang}}</span>\ Для этих переменных создается отельный файл jslang.php. Так вот можно ли сюда как-то передать переменную? В обычных lang строках ставится знак %. А вот как здесь передать я так и не понял. Можно генерировать html на php, но хотелось бы через переменные. Edited 2 августа, 20231 yr by edmsl
2 августа, 20231 yr 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() у элемента. Всяко пробовал, но ничего не выходит.
2 августа, 20231 yr 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 для числовых значений
3 августа, 20231 yr 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 3 августа, 20231 yr by edmsl
3 августа, 20231 yr comment_195322 Осталось разобраться с elasticsearch, но с ходу вчера мне не удалось его запустить на винде. Буду разбираться.
4 августа, 20231 yr comment_195331 Я правильно понимаю, что движком не предусмотрена возможность поиска по 2-м категориям? Только одна или все сразу. Допустим, я хочу выполнить поиск только по файлам и галерее, но я не могу их выбрать, т.к. селектор не поддерживает мультивыбор. Отдельно файлы, отдельно галерея. Возможно ли это реализовать через свой кастомный запрос к БД?
5 августа, 20231 yr comment_195339 В 28.07.2023 в 21:49, Zero108 сказал: Не ищет по двум и более словам Запустил elasticsearch и да, проблема есть. Буду копаться.
5 августа, 20231 yr comment_195340 Проблема заключается в добавлении символа * в конец поискового запроса при включенной опции Search incomplete words в плагине. Это так называемый поиск с помощью Wildcard Query, когда звездочка подразумевает любые символы. С обычным поиском это работает, а вот в Эластике нет. Работает только с одним словом, без пробелов. Похоже, что это внутренние механизмы Эластика. На сайте пишут, что в данном случае не нужно использовать Wildcard. Я не знаю, возможно ли как-то изменять принцип работы поиска Эластика. Если нет, то придется для него опцию Search incomplete words отключить.
5 августа, 20231 yr comment_195341 32 минуты назад, edmsl сказал: Я не знаю, возможно ли как-то изменять принцип работы поиска Эластика. Если нет, то придется для него опцию Search incomplete words отключить. Лучше отключить и не отображать настройку при включенном эластике. Честно говоря, особых преимуществ эластика перед обычным поиском средставми mysql при небольших нагрузках не заметил. Есть различия в результатах поиска? Edited 5 августа, 20231 yr by Zero108
5 августа, 20231 yr comment_195342 2 часа назад, Zero108 сказал: Есть различия в результатах поиска? Я не заметил. Но у меня на тестовом сайте и контента мало. Сделаю тогда эту опцию недоступной при использовании Эластика.
5 августа, 20231 yr comment_195344 Надеюсь, финальная итерация. Поправил выдачу результатов по конкретной записи (например, файлу. Видео из Videos, надуюсь, работает по тому же принципу), когда в выдачу попадали другие записи. Расширил настройки виджета. Теперь можно убрать показ окна настроек поиска. Удобно, если нужно сделать поиск по какой-то одной категории. Например, только по файлам. Поправил некоторые свои ошибки. Если не будет проблем, то буду считать работу завершенной. (BIM) Quick Search 4.6.0.xml
5 августа, 20231 yr comment_195350 3 часа назад, edmsl сказал: Теперь можно убрать показ окна настроек поиска. О чем идет речь? Выпадающий список разделов сайта в строке поиска и раньше можно было отключать. Обозначил как 4.6.1.
5 августа, 20231 yr comment_195352 Хочу сообщить о баге: если поисковая система default (MySQL), а в плагине включена настройка Search incomplete words, то при переключении поисковой системы на эластик плагин перестает работать (поисковых результатов 0 при любом запросе). Видимо, нужно внести изменения, чтобы настройка Search incomplete words не учитывалась или еще что-то. Не работает в корневом разделе форумов https://a108.net/forums/ (не ищет по подфорумам). Чтобы вернуть поиск в рабочее состояние, нужно переключить поисковую систему на джефолтную и выключить настройку плагина, затем вернуться на эластик. Edited 5 августа, 20231 yr by Zero108
5 августа, 20231 yr comment_195353 И сделать переиндексацию поиска. И еще маленькая просьба. В приложении Videos не отображаются превью в поиске. Превью можно добавлять в виде вложения, в виде ссылки, либо создавать автоматический при добавлении или редактировании видео. У меня, например, большинство превью в виде ссылок вида https://i.ytimg.com/vi/CBiuig13YRU/hqdefault.jpg Можно ли сделать, чтобы в поиске по Videos появлялись превью? Edited 5 августа, 20231 yr by Zero108
6 августа, 20231 yr comment_195357 9 часов назад, Zero108 сказал: О чем идет речь? Об этом. Спойлер Даже если его можно отключить, это будет работать глобально. А так это опция влияет только на конкретный виджет. 8 часов назад, Zero108 сказал: Хочу сообщить о баге Если переключать типы поиска туда-сюда, то и обычный поиск не выдает результатов, пока не перестроятся поисковые индексы. Сам плагин здесь ни при чем. 8 часов назад, Zero108 сказал: В приложении Videos не отображаются превью в поиске. Попробую добавить.
6 августа, 20231 yr comment_195358 Есть проблема с Videos. Это приложение и при его установке не создается папка dev. Из-за этого вылетают ошибки и я не могу работать над плагином. Как быть?
6 августа, 20231 yr comment_195361 1 час назад, edmsl сказал: Есть проблема с Videos. Это приложение и при его установке не создается папка dev. Из-за этого вылетают ошибки и я не могу работать над плагином. Как быть? Версия ips4 и php ? Устанавливали с нуля или обновляли?
6 августа, 20231 yr 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.