Как наладить поиск по сайту?

15.07.2024

Как наладить поиск по сайту?

Компоненты, необходимые для организации текстовго поиска по сайту доступны в базовом комплекте поставке, но не на каждом сайте они настроены. То, что описано ниже, можно использовать именно в том виде, как описано, но желательно, результат оформить в стиле Вашего сайта.

Важно понимать, что введёная поискова строка будет искаться именно в том виде, в котором она будет введена. Морфология не учитывается. Порядок слов также не будет изменён. Чтобы обойти эти ограничения, можете фразы с другим порядком слов и в других падежах, временах, спряжениях и т.п. указывать в каких-либо скрытых полях, которые не будут видны на сайте. И указать эти поля как те, по которым также должен вестись поиск. Это будет описано ниже...

Создание формы поиска

Форму поиска (обычный HTML-код) можно написать прямо в шаблонах в элементе HTML-код веб-страницы, но это не самый продуманный вариант, если, вдруг, Вам понадобится быстро изменить один и тот же код сразу в нескольких шаблонах. Лучше создать одно редактируемое поле, в котором будет HTML-код формы. И уже это поле можно вставить во всех (нужных) шаблонах. Так в случае изменения кода в форме, он автоматически изменится во всех (нужных) шаблонах.

  1. Перейдите в раздел Контент \ Редактируемые поля (можно в другой подраздел раздела Контент)
  2. Нажмите Добавить новую запись
  3. Укажите любое название, например, Форма поиска
  4. Укажите любой ID, например, search-form (дальше будет ориентироваться именно на такой ID)
  5. Выберите шаблон Многострочное поле без редактора и нажмите Добавить. Если такого шаблона нет (был удалён), то ознакомьтесь с тем, как создать шаблон и вставить в него элемент Многострочное поле без редактора.
  6. Вставьте в поле Содержимое поля без редактора (название может быть другое), код указанный ниже, скорректируйте его под свои нужды и сохраните изменения.

Пример кода:

<form method="post" action="/search/">
  <input placeholder="Поиск..." type="text" name="search" value="{plugin:current_SearchText}" />
  <input type="submit" value="Найти">
</form>

Для тега form, можно изменить следующее:

  • method - может быть, как post, так и get. Во втором случае поисковый запрос будет доступен в адресной строке браузера
  • action - здесь должен быть указан адрес страницы, на которой будут располагаться результаты поиска. В нашем случае это страница с ID search. Далее будем ориентироваться именно на него, хотя ограничений на ID страницы с результатами поиска нет.

Поле, в котором будет вводиться поисковый запрос, обязательно должно иметь значение search в свойстве name. Изменить можно следующее:

  • type - может быть любым, подходящим в Вашем случае, например, number. Но в большинстве случаев лучше оставить text или search.
  • value - можно оставить пустым или написать любой другой текст, который сразу же будет отображаться в поле для ввода поискового запроса. Чтобы автоматически отобразить здесь только что введённый поисковый запрос, напишите {plugin:current_SearchText}

Других ограничений или обязательных требований нет. Для отправки формы можете использовать, как <input type="submit"><input type="image"><button type="submit"></button>, так и любой другой, допустимый в HTML, вариант.

Естественнно, код формы нужно оформить в стиле Вашего сайта, если он сильно выделяется на фоне других элементов интерфейса wink

Код формы поиска, например, имеющей вид {plugin:content;id:search-form;value:multistringfield_1_value}, будет виден ниже поля Содержимое поля без редактора (название может быть другое). Скопируйте его и вставьте в элемент HTML-код веб-страницы во всех нужных шаблонах. Если код формы не виден, то на панели инструментов нажмите кнопку Подсказки и помощники по вставке плагинов и свойств: показать.

Создание списка результатов поиска

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

  1. Перейдите в раздел Справочники \ Оформление меню нажмите Добавить новую запись
  2. Нажмите Добавить новую запись
  3. Укажите любое название, например, Результаты поиска
  4. Укажите любой ID, например, search-results (дальше будет ориентироваться именно на такой ID) и нажмите Добавить

Далее в самом простом случае достаточно заполнить только поле HTML-код обычной записи, например, таким кодом:

<p>
  <a href="{content_url_value}">{content_name}</a>
</p>

Чуть более сложный вариант, в котором также будет отображён путь к найденным страницам при условии, что вариант меню с ID path существует (не было удалён):

<p>
  <a href="{content_url_value}">{content_name}</a>
  <br />
  {plugin:menu;id:path;select:path;factor:{content_id}}
</p>

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

  • HTML-код до списка подстраниц: <p><a href="{menu_subpage_firsturl}" title="В начало списка">«</a>
  • HTML-код после списка подстраниц: <a href="{menu_subpage_lasturl}" title="В конец списка">»</a></p>
  • HTML-код обычного элемента списка подстраниц: <a href="{menu_subpage_url}">{menu_subpage}</a>
  • HTML-код активного элемента списка подстраниц: <a href="{menu_subpage_url}">{menu_subpage}</a>

Код меню тоже желательно оформить в стиле Вашего сайта, если он сильно отличается от других элементов интерфейса. Ограничений или обязательных требований по части HTML-кода - нет.

Осталось только вставить код для вызова списка результатов поиска в основной текст страницы c ID search (либо с другим ID, который указан в форме поиска), либо в HTML-код её шаблона.

Код может быть, например, таким:

{plugin:menu;id:search-result;search:{plugin:current_SearchText};inlist:20;maxsubpages:10;factor:.;select:children-all;sort:name}

Вы можете использовать другие параметры для вызова плагина универсального меню. Важно обратить внимание на следующие:

  • id: должен быть равен ID списка (меню), созданного для отображения результатов поиска
  • types: здесь можно через запятую перечислить типы, записи, которых Вам нужны. Например, если нужны новости и товары, то напишите news,goods. Если ничего не указывать, то поиск будет вестись по записям всех типов.
  • select: в большинстве случаев больше других вариантов подойдёт all (поиск будет вестись по всей струтуре сайта). Также часто может быть полезен вариант children (для поиска только по непосредственным подразделам того, что указано в factor). И также может быть полезен вариант children-all (для поиска по всем подразделам того, что указано в factor). Последний вариант даёт самую высокую нагрузку на веб-сервер, поэтому не является предпочтительным, если другие варианты дают схожий результат.
  • search: здесь должна быть указана поисковая фраза. Чтобы автоматически указать здесь то, что было введено в форме поиска, напишите {plugin:current_SearchText}.
  • search-cols: здесь через запятую можно указать поля, по которым будет вестись поиск. По умолчанию используется такое значение: id,name,seo_title,seo_description,seo_keywords,maintext_value. Вы также можете добавить в этот список другие поля, в том числе те скрытые поля, про которые написано в начале данной статьи.
  • factor: не будет иметь значение, если в select указано all. Для других, описанных выше, вариантов здесь можно указать ID той страницы, подразделы которой нам важны в поиске, например, catalog для поиска товаров и их категорий. Если нужно указать самый верх структуры (для поиска по всем её подразделам), укажите точку - .
  • inlist: позволит не выводить огромное количество результатов поиска на одной странице, а разбить список на несколько подстраниц, ограничив каждую максимально допустимым, указанным здесь количеством записей
  • maxsubpages: позволит ограничить количество подстраниц с результатами поиска на случай, если их будет слишком много
  • sort: даст возможность организовать один из вариантов сортировки

 


CMS Zion WebEngine является бесплатной системой. Развивается за счёт рекламы, помощи веб-студии #webZion и других спонсоров.

 

Будем рады, если Вы поддержите нас любой суммой, а также поделитесь идеями на счёт каких-либо улучшений и доработок для CMS...

 

Заранее, большое, спасибо

 

Блог обновлений

Zion WebEngine 25.04.11
  • Доработаны элементы Файл и Изображение (спасибо Киокушин Online):
    • Теперь значительно проще задавать параметры для допустимых форматов загружаемых файлов (в том числе изображений):
      • При обращении к методу Upload, указанных элементов можно указать список допустимых MIME-типов в параметре mime
      • Если список не задан, то элемент Файл примет любой файл, а элемент Изображение примет только JPG-, PNG- или GIF-изображение
  • Доработан класс для управления пользователями (спасибо Генпер):
    • Устранены проблемы с автоматическим добавлением отсутсвующих столбцов в таблицу данных

Zion WebEngine Zion Pub Hub База данных/Таблицы данных Доступы/Пользователи Изображение Классы Файлы/Папки Элементы Что такое Элементы?

Zion WebEngine 25.04.10
  • Доработан класс для управления файлами и папками (спасибо Киокушин Online):
    • Устранена уязвимость, при которой инструмент "Размеры файлов и папок" во время проверки на то, используется ли файл, мог принять решение о необходимости удаления большого "неиспользующегося" файла не только по причине того, что он действительно нигде не используется, но и по причине того, что при обращении к базе данных возникла какая-либо ошибка.

Zion WebEngine База данных/Таблицы данных Классы Файлы/Папки Что такое Классы?

Zion WebEngine 25.03.25
  • Доработан драйвер оболочки (спасибо Docke Prof):
    • Теперь результат выполнения плагина кэшируется и переиспользуется только, если он не является пустым

Zion WebEngine Драйверы Кэш/Кеш

Zion WebEngine 25.03.13
  • Доработаны драйвер оболочки и классы для управления проектом, базой данных и корзиной для мусора (спасибо Docke Prof):
    • Создана возможность для моментальной полной очистки корзины для мусора, в которой в том числе хранится кэш веб-страниц
    • Теперь полная очистка корзины выполняется:
      • перед запуском полного обновления кэша веб-страниц
      • при любом сохранении чего-либо в административном интерфейсе (ранее очищался кэш только для той страницы, которая была сохранена)
    • Теперь, если в команде вызова любого плагина указать новый параметр cache с непустым значением, то результат выполнения плагина закешируется:
      • Результат кэширования будет использоваться при запуске того же плагина с тем же набором параметров:
        • Важно! При использовании кэширования для некоторых плагинов нужно явно в параметрах указывать, на какой веб-странице нужен данный кэш. Иначе будет использован одинаковый код из кэша там, где он должен быть разным. Например, для плагина menu, нужно указать параметр factor. Иначе для всех страниц будет указан один и тот же путь ("хлебные крошки"), у всех разделов будут одни и те же подразделы и т.п.
      • Кэш плагинов хранится там же и очищается также, как кэш-вебстраниц
  • Сегодняшние изменения позволяют не просто быстро очищать весь кэш, но и создавать его быстро и адресно, а использовать - массово, сильно разгружая базу данных, многократно уменьшая число запросов к ней.

Zion WebEngine Административный интерфейс База данных/Таблицы данных Драйверы Классы Корзина для мусора Кэш/Кеш Меню/Списки/Навигация Плагины Что такое Плагины?

Zion WebEngine 25.03.07
  • Доработан главный файл гостевого интерфейса (спасибо Эспераль):
    • Более корректно налажена работа с суперглобальными переменными

Zion WebEngine POST/GET-данные Гостевой интерфейс

Zion WebEngine 25.03.06
  • Доработан главный файл гостевого интерфейса (спасибо Киокушин Online):
    • Более корректно налажена работа с сессиями и суперглобальными переменными

Zion WebEngine Что такое Административный интерфейс и Гостевой интерфейс? POST/GET-данные Гостевой интерфейс

Zion WebEngine 25.03.03
  • Доработано несколько классов и трейтов (вспомогательных классов), а также главный файл гостевого интерфейса (спасибо Киокушин Online):
    • Более корректно налажена работа с сессиями и суперглобальными переменными

Zion WebEngine POST/GET-данные Гостевой интерфейс Классы Что такое Классы?

Zion WebEngine 25.02.27
  • Доработаны классы для управления базой данных, контентом и пользователями (спасибо MasterProfi):
    • Устранена проблема с отображением некорректных заголовков столбцов при просмотре списка пользователей в административном интерфейсе
  • Доработаны классы для управления базой данных, контентом и пользователями (спасибо Киокушин Online):
    • Налажен живой поиск по связям контента с контентом и пользователей с контентом в административном интерфейсе

Zion WebEngine Административный интерфейс База данных/Таблицы данных Доступы/Пользователи Классы Контент/Контентные единицы Поиск текста Связи Что такое Контент?

Zion WebEngine 25.02.25
  • Доработан класс для работы с базой данных (спасибо Киокушин Online):
    • Более корректно реализовано сохранение параметров для доступа к БД

Zion WebEngine База данных/Таблицы данных Классы Как настроить сайт?

Zion WebEngine 25.02.18
  • Доработана система мониторинга для SEO-оптимизации (спасибо Docke Prof):
    • Устранена проблема, из-за которой файл sitemap.xml формировался значительно чаще, чем было указано в настройках, что могло сильно замедлять правку контента и т.п.

Zion SEO Booster Что такое система Мониторинга? SEO-параметры Контент/Контентные единицы Мониторинг

Zion WebEngine 25.02.17
  • Доработаны драйвер оболочки и класс для работы с базой данных (спасибо Киокушин Online):
    • Более корректно налажена работа с сессиями

Zion WebEngine Драйверы Классы

Zion WebEngine 25.02.13
  • Доработано несколько драйверов, классов и трейтов (вспомогательных классов) (спасибо Киокушин Online):
    • Более корректно налажена работа с сессиями

Zion WebEngine Драйверы Классы

Zion WebEngine 25.02.11
  • Доработаны классы для управления корзиной заказов, способами доставки, а также настраиваемый модуль для управления самовывозом (спасибо Docke Prof):
    • Значительно расширены возможности по кастомизации формы заказа для интернет-магазинов

Zion Catalog Zion xDelivery Интернет-магазин Классы Корзина для заказов Настраиваемые модули Способы доставки/самовывоза Формы

Zion WebEngine 25.02.06
  • Доработан JS-скрипт для реализации AJAX (спасибо Docke Prof):
    • Код стал более лаконичным и использует меньше памяти

Zion WebEngine AJAX

Zion WebEngine 25.01.28
  • Доработан класс для проектом (спасибо Docke Prof):
    • Устранены проблемы с живым поиском по меню/спискам и галереям в административном интерфейсе

Zion WebEngine Административный интерфейс Галереи/Слайды Классы Меню/Списки/Навигация Поиск текста Что такое Классы?

Zion WebEngine 25.01.21
  • Доработан класс для управления базой данных (спасибо ПромСтройПанель):
    • Устранены проблемы с отображением заголовков некоторых таблиц в административном интерфейсе

Zion WebEngine Что такое Административный интерфейс и Гостевой интерфейс? Административный интерфейс База данных/Таблицы данных Классы

Zion WebEngine 25.01.20

Zion WebEngine Что такое CMS Zion WebEngine?

Zion WebEngine 25.01.12
  • Доработан плагин TimeMashine (спасибо Киокушин Online)
    • Добавлен новый параметр skipvoid, который при любом непустом значении вернёт пустую строку, если для параметра value указано пустое/нулевое значение:
      • Иначе (как и раньше) плагин продолжит работать с текущей временной меткой в качестве параметра value

Zion WebEngine Дата/Время/TimeMashine Плагины Что такое Плагины?

Zion WebEngine 25.01.04
  • Доработан класс для управления проектом:
    • Внедрены новые стандарты CMS

Zion WebEngine Что такое CMS Zion WebEngine? Классы

Zion WebEngine 24.12.29
  • Доработан класс для управления импортом данных о товарах из YML-фида со стороннего веб-сайта (спасибо Docke Prof):
    • Теперь по окончании импорта в подсказе о том, какие характеристики можно добавить в шаблон отображаются только уникальные варианты значений
  • Доработан главный файл гостевого интерфейса:
    • Более корректно налажена проверка значений некоторых переменных, которые могут быть не определены на момент обращения к ним
  • Доработано множество элементов, классов и трейтов (вспомогательных классов):
    • Более корректно налажена работа с сессиями

Zion WebEngine Zion Import Zion Gallery XML/RSS/1С/YML Гостевой интерфейс Импорт/Экспорт Классы Помощники/Мастеры/Инструкции/Подсказки Характеристики/Разновидности Шаблоны контента Элементы Что такое Элементы?