Тарифы Услуги Сим-карты

Автодополнение jquery. JQuery Autocomplete: автозаполнение. Использование массива объектов в качестве источника данных для Autocomplete

Ну вот и готова предрелизная версия mSearch2. Мы должны ее дружно потетстировать, поправить баги и получится стабильная версия.

В принципе, теперь я воплотил все свои (и не только свои) хотелки. У нас добавилось управление словарями прямо в вдминке и автодополнение.

Со словарями всё просто - при установке дополнения сразу загружаются 2 словаря: русский и английский. Если вам нужно добавить или удалить словарь, для этого появился новый раздел в админке.
В индексации участвуют все установленные словари, ничего настраивать не нужно. При загрузке словаря вы можете выбрать зеркало SourceForge, чтобы качать с ближайшего к вам сервера.

АвтодополнениеЭту штуку просят сделать уже давно, но так как она весьма непростая, реализация затянулась. Фокус в том, что автозаполнение на готовом сайте «для себя» сделать нетрудно, а вот написать универсально, чтобы вы могли показывать и категории, и запросы, и товары с картинками - это заморочка.

Но все вопросы решены и теперь у нас есть новый сниппет mSearchForm . Вот его параметры:

  • &pageId - id страницы, на которую будет отправлен юзер в месте с запросом. Если не указано - это будет текущая страница.
  • &tplForm - чанк с фомой для вывода. У тега form обязательно должен быть указан класс msearch2 .
  • &tpl - Оформление строчек автодополнения.
  • &autocomplete - Настройка автоподсказок. Доступно 3 варианта: results (по умолчанию, поиск по сайту), queries (поиск по запросам) и 0 - отключить.
  • &limit - Ограничение выборки строк автодополнения.
  • &element - Какой сниппет оформляет результаты. Это актуально только для режима results .
Итак, у нас есть 2 варианта работы autocomplete: поиск по сайту и поиск по запросам.

Первый самый интересный - он ищет точно так же как и сниппет mSearch2, получает id совпадений и передаёт их в указанный сниппет. А сниппет может быть любым, главное, чтобы он понимал параметр &resources .

Заодно сниппету будут переданы все параметры, указанные при вызове mSearchForm - очень похоже на работу mFilter2 с пагинатором.

Таким образом, вы можете указать чанки, подключение ТВ, таблиц, картинок товаров и чего угодно. Так как этот режим сразу выводит точное совпадение, при выборе результата вы отправитесь на конечную страницу - вам нечего искать, вы уже нашли.

Понятно, можно не кликать, а жать enter и будет поиск по тому, что вы набрали, без подсказок. Конечно, все теги в чанках выполняются. Например, мне очень нравится вызывать в них pdoCrumbs .

А второй режим попроще - он просто смотрит таблицу запросов, которая появилась в прошлой версии, и выводит совпадения из неё. Выводит, понятно, только те, что с результатами. Потому, что от дополнения «ккккувпусм» толку никакого не будет (вы бы видели, что у меня на сайте ищут).

Само дополнение работает на


Disclaimer (Attention detected!)

Сразу заявляю, что ни один из существующий, а также фреймворков будущего, и близко не стоит рядом с $mol. Я ни в коем случае не утверждаю, что какой-либо иной фреймворк круче чем $mol, потому что с $mol просто невозможно соревноваться в крутости. Это самый крутой фреймворк из когда-либо созданных человечеством. Уверен именно $mol спасет мир!
Ну, а теперь можно поговорить о Svelte) Так как это пятничный пост, постараюсь его сильно не затягивать.

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

Собственно сам svelte-компонент может выглядеть так:

{{#await suggestions}} {{then options}} {{#each options as option}} {{ option }} {{/each}} {{/await}} export default { data: () => ({ search: "", suggestions: }) };

Ремарка

Внимательный читатель сразу заметит своеобразный «life-hack», который тут присутствует. А именно использование html5-тега , который фактически и создавался для подобных вещей, однако до сих пор имеет слабую поддержку браузерами .

Хочу отметить, что использую его здесь чисто в демонстрационных целях, чтобы визуально упростить код для лучшего понимания, а также потому что конкретная реализация выпадающего списка не является целью статьи. Переделать список с на