Пошук по сайту. Форма пошуку, 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="/ua/shop/" itemprop="potentialAction" itemscope itemtype="https://schema.org/SearchAction">
<meta itemprop="target" content="//{HOTENGINE-SC:site_url}/ua/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}/ua/shop/?search={search}) вказано ua мову, ви можете її змінити.

Приклад:


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] для універсальних значень).

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

Детальніше про оператори — у «Налаштуваннях», у вкладці «Пошук».


← Назад