Поиск по сайту. Форма поиска, JSON и подсказки.

☰

← Таму

Поиск по сайту


Поиск осуществляется после отправки формы с переменной «search». Тип данных для поиска задается при помощи пути (страницы) на которую отправляется форма. Для поиска по «Каталогу товаров» отправку необходимо сделать на страницу «/shop/».

Как добавить поисковую форму в Шапку сайта?

В Блоке/Меню, расположенном в Шапке сайта, вы можете добавить следующий код:

Code: html
<div align="center" id="hotengine-search_form_block" itemscope itemtype="https://schema.org/WebSite">
<link itemprop="url" href="//{HOTENGINE-SC:site_url}/"/>
<form id="hotengine-search-searchinput" name="hotengine-search-searchinput" method="post" action="/ru/shop/" itemprop="potentialAction" itemscope itemtype="https://schema.org/SearchAction">
<meta itemprop="target" content="//{HOTENGINE-SC:site_url}/be/shop/?search={search}"/>
<label>
<input class="input" name="search" type="text" placeholder="Поиск..." id="hotengine-smart_search_input" value="" itemprop="query-input">
</label>
<label>
<button type="submit" class="search-button">Найти</button>
</label></form>
</div>


Код сразу содержит Микроразметки для Google. В пути для отправки формы (//{HOTENGINE-SC:site_url}/be/shop/?search={search}) указан be язык, вы можете его изменить.

Пример:


CSS стиль блока, с заменой кнопки отправки на изображение:

Code: Css
#hotengine-search_form_block{
position: relative;
width:300px;
float: right;
z-index:2;
height: 41px;
margin:33px 0px 33px 10px;
}

#hotengine-search_form_block input{   
height: 20px;
vertical-align: middle;
border: 1px solid #e5e5e5;
padding: 0.15em;
width: 20.0em;
color:#9c9b9b;
height: 20px;
background: #fff;
padding: 0 13px;
height: 41px;
}
#hotengine-search_form_block input[type="text"]{
text-indent:4px;height: 39px;
}
#hotengine-search_form_block .search-button{
background:#41474c;
border-radius:0px;
vertical-align:middle;
display:block;
position:absolute;
top:0px;
right:0px;
border:none;
color:#fff;
width:41px; height:41px;
text-align:center;
font-size:12px;
line-height:25px; 
cursor:pointer; overflow:hidden; 
}
#hotengine-search_form_block .search-button:after{
content:""; width:41px; height:41px; display:block; position: absolute; right:0px; top:0px; 
background:none; background-color:#d6d6d6;
-webkit-mask:url("data:image/svg+xml;base64,PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4KDTwhLS0gVXBsb2FkZWQgdG86IFNWRyBSZXBvLCB3d3cuc3ZncmVwby5jb20sIFRyYW5zZm9ybWVkIGJ5OiBTVkcgUmVwbyBNaXhlciBUb29scyAtLT4KPHN2ZyB3aWR0aD0iODAwcHgiIGhlaWdodD0iODAwcHgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmaWxsPSJub25lIj4KDTxnIGlkPSJTVkdSZXBvX2JnQ2FycmllciIgc3Ryb2tlLXdpZHRoPSIwIi8+Cg08ZyBpZD0iU1ZHUmVwb190cmFjZXJDYXJyaWVyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KDTxnIGlkPSJTVkdSZXBvX2ljb25DYXJyaWVyIj4KDTxwYXRoIGZpbGw9IiMwMDAwMDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuMjUgMmE1LjI1IDUuMjUgMCAxMDMuMTQ0IDkuNDU1bDIuMzI2IDIuMzI1YS43NS43NSAwIDEwMS4wNi0xLjA2bC0yLjMyNS0yLjMyNkE1LjI1IDUuMjUgMCAwMDcuMjUgMnpNMy41IDcuMjVhMy43NSAzLjc1IDAgMTE3LjUgMCAzLjc1IDMuNzUgMCAwMS03LjUgMHoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPgoNPC9nPgoNPC9zdmc+") center center no-repeat; 
-webkit-mask-size:20px;
}
#hotengine-search_form_block .search-button:hover:after{
	background-color:#fff;
}
#hotengine-search_form_block .search-button:active:after{transform: translateY(1px);}

Если заменить путь /shop/ на /blog/, то поиск будет осуществляться по каталогу статей.
Перезапись value поля input name="search" происходит автоматически.

О разметке страницы поиска (data-hotengine-marking) — в разделе Микроразметка.

Логика поиска (условия [AND] и [OR])


По умолчанию поиск ищет товары, содержащие всю поисковую фразу. Чтобы уточнить запрос, используйте логические операторы:
  • [AND] — «И»: товар должен содержать все условия одновременно.
  • [OR] — «ИЛИ»: достаточно совпадения хотя бы одного условия.
Приоритет: сначала обрабатываются все [AND], затем [OR]. Запрос Шапка[AND]синяя[OR]универсальная означает «(Шапка И синяя) ИЛИ универсальная».

Вложенная логика (скобки): для сложных условий используйте группы [AND ...] и [OR ...]. Слова внутри группы, разделённые пробелом, объединяются её оператором. Скобки обрабатываются изнутри наружу.

Примеры:
  • BMW[AND]X6[AND]G06 — товары, содержащие BMW, X6 и G06.
  • BMW[OR]Audi — товары BMW или Audi.
  • [AND BMW [OR] X6] [AND] [OR Audi [AND] Q7] — (BMW ИЛИ X6) И (Audi И Q7).
  • [OR [AND сумка кожа] [AND рюкзак ткань]] — (сумка И кожа) ИЛИ (рюкзак И ткань).
Лимит: до 20 условий на один запрос. При несбалансированных скобках или операторе без условия результат не выводится (защита от некорректного запроса).

Пример: собственный поисковый фильтр по автомобилям
Операторы можно использовать не только для уточнения, но и для создания собственного поискового фильтра. Значения храните в «Мета ключевые слова» товара через запятую — например, марку, модель и годы выпуска:

Мета ключевые слова товара
,AUDI,A6,C7 2011-2018,

Затем выполните поиск по этим значениям, разделяя их запятой и связывая операторами:

Поисковый запрос
,AUDI,[AND],A6,[AND],C7 2011-2018,

Такой запрос найдёт автомобили AUDI A6 поколения C7 2011–2018 годов.

Универсальное условие через [OR]: добавьте в ключевые слова общее значение (например «универсальная») и используйте его как альтернативу — тогда в результаты попадут и универсальные товары:

Поисковый запрос
,AUDI,[AND],A6,[OR],универсальная,

Такой запрос означает «(AUDI И A6) ИЛИ универсальная».

Динамические многоуровневые фильтры
Ключевые слова можно использовать не только для поискового фильтра, но и для построения многоуровневых фильтров со связанными списками. Например, для автомобилей: «Марка → Модель → Годы» — каждый следующий список появляется только после выбора значения на предыдущем уровне. Связанные списки формируются на JavaScript по значениям из «Мета ключевых слов» товаров. Так можно создать даже отдельный поиск по маркам автомобилей.

Пример: связанные списки (JavaScript)
const cars = {
  AUDI: ["A6", "Q7", "A3"],
  BMW:  ["X6", "X5", "3 Series"]
};
// при выборе марки заполняем список моделей
brand.addEventListener("change", function () {
  model.innerHTML = "";
  (cars[brand.value] || []).forEach(function (m) {
    var o = document.createElement("option");
    o.textContent = m;
    model.appendChild(o);
  });
});

Выбранные значения подставляйте в поисковый запрос через операторы [AND] (или [OR] для универсальных значений).

Значения удобно вести в базе значений — в «Мета ключевых словах» товара и на странице «Типы товаров и значения характеристик».

Подробнее об операторах — в «Настройках», во вкладке «Поиск».


← Таму